Python Panda时间序列显示考虑假期的营业月底-值错误:DatetimeIndex的真值不明确

Python Panda时间序列显示考虑假期的营业月底-值错误:DatetimeIndex的真值不明确,python,python-3.x,pandas,Python,Python 3.x,Pandas,我正在尝试使用pandas创建一个timeseries,以允许我过滤一个数据帧,我必须只包含与每个月的第一个和最后一个工作日对应的数据。一、 但是,必须考虑到银行假期。在第一步中,我将尝试创建一个包含所有营业月末日期的timeseries,考虑到节假日。我的代码开头如下所示(尚未包括筛选): 但是,当我运行代码时,会收到一条错误消息,说明: File "C:/Users/43153/Documents/General/ACE/pre-test/apple_stocks.py", line 17

我正在尝试使用pandas创建一个timeseries,以允许我过滤一个数据帧,我必须只包含与每个月的第一个和最后一个工作日对应的数据。一、 但是,必须考虑到银行假期。在第一步中,我将尝试创建一个包含所有营业月末日期的timeseries,考虑到节假日。我的代码开头如下所示(尚未包括筛选):

但是,当我运行代码时,会收到一条错误消息,说明:

 File "C:/Users/43153/Documents/General/ACE/pre-test/apple_stocks.py", line 17, in <module>
    a=pd.bdate_range(end=stocks.head(1).index[0], start=stocks.tail(1).index[0], freq='BM',holidays=holidays,weekmask=None)

  File "C:\ML\anaconda3\lib\site-packages\pandas\core\indexes\datetimes.py", line 1678, in bdate_range
    elif holidays or weekmask:

  File "C:\ML\anaconda3\lib\site-packages\pandas\core\indexes\base.py", line 2394, in __nonzero__
    self.__class__.__name__

ValueError: The truth value of a DatetimeIndex is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
文件“C:/Users/43153/Documents/General/ACE/pre-test/apple_stocks.py”,第17行,在
a=pd.bdate_范围(end=stocks.head(1).指数[0],start=stocks.tail(1).指数[0],freq=BM',假日=假日,周末=无)
文件“C:\ML\anaconda3\lib\site packages\pandas\core\index\datetimes.py”,第1678行,在bdate\u范围内
elif假日或周末任务:
文件“C:\ML\anaconda3\lib\site packages\pandas\core\index\base.py”,第2394行,非零__
self.\u类\u.\u名称__
ValueError:DatetimeIndex的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。
是什么导致了这种行为?不幸的是,我还没有在网上找到答案

(如果有人有一个更优雅的建议,建议在timeseries中也包括开始营业的月份,我很有兴趣在以后使筛选更简单。)

您可以试试这个

>>将熊猫作为pd导入
>>>从pandas.tseries.holiday导入USFederalHolidayCalendar作为日历
>>>从pandas.tseries.offset导入CDay
>>>股票=pd.read\u csv('appl\u 1980\u 2014.csv')
>>>股票['Date']=pd.to_datetime(股票['Date'])
>>>股票=股票。设置指数(“日期”,验证完整性=真)
>>>cal=日历()
>>>周天数=pd.bdate\u范围(stocks.tail(1).索引[0].date(),stocks.head(1).索引[0].date(),freq=CDay(calendar=cal))
>>>第一天=计划日期范围(最小(星期天),最大(星期天),频率='BMS')
>>>最后几天=计划日期范围(最小(周日),最大(周日),频率='BM')
>>>第一天。追加(最后一天)
日期时间索引(['1981-01-01','1981-02-02','1981-03-02','1981-04-01',',
'1981-05-01', '1981-06-01', '1981-07-01', '1981-08-03',
'1981-09-01', '1981-10-01',
...
'2013-09-30', '2013-10-31', '2013-11-29', '2013-12-31',
'2014-01-31', '2014-02-28', '2014-03-31', '2014-04-30',
'2014-05-30', '2014-06-30'],
dtype='datetime64[ns]',长度=806,频率=None)

没错,但我最终需要的是每个月的最后一个工作日,我认为仅仅取消假期是不允许我这么做的。这会带来一个错误。但我不确定这是如何达到预期效果的?(但可能我误解了代码)我需要一个列表,其中包含每个月的最后一个工作日(最好是每个月的第一个工作日,尽管我可以单独完成)。我再次编辑了我的答案。正如你所说,我是分开做的。我尝试了一下,没有发现错误。
 File "C:/Users/43153/Documents/General/ACE/pre-test/apple_stocks.py", line 17, in <module>
    a=pd.bdate_range(end=stocks.head(1).index[0], start=stocks.tail(1).index[0], freq='BM',holidays=holidays,weekmask=None)

  File "C:\ML\anaconda3\lib\site-packages\pandas\core\indexes\datetimes.py", line 1678, in bdate_range
    elif holidays or weekmask:

  File "C:\ML\anaconda3\lib\site-packages\pandas\core\indexes\base.py", line 2394, in __nonzero__
    self.__class__.__name__

ValueError: The truth value of a DatetimeIndex is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().