我有一个熊猫系列(索引是日期),我试图从该系列中定期(365天)提取日期。为了简单起见,我使用CustomBusinessDay
。这似乎工作正常,但是对于一个特定的示例,它失败了,这意味着我可能不完全了解它的工作方式。
这就是我正在做的事情:
我有一个系列“测试”:
test
Out[29]:
2008-04-02 0.006084
2008-04-03 -0.002923
2008-04-04 0.002602
等等。
更具体的是这里出现问题的地方:
test[512:516]
Out[31]:
2010-03-30 -0.002650
2010-03-31 -0.002898
2010-04-01 0.016151
2010-04-06 0.003690
dtype: float64
我使用原始索引创建了自定义营业日,并创建了频率范围为365D的日期范围,并添加0*CustCal
以获得原始索引中的日期:
CustCal=pd.tseries.offsets.CustomBusinessDay(calendar=test.index)
tempRestrikeDates = pd.date_range(start=test.index[0], end=test.index[-1], freq='365D')+0*CustCal
但是,如下面的结果所示,“ 2010-04-02”是tempRestrikeDates
的一部分,但不在测试的原始索引中。
tempRestrikeDates
Out[35]:
DatetimeIndex(['2008-04-02', '2009-04-02', '2010-04-02', '2011-04-04',
'2012-04-02', '2013-04-01', '2014-04-01', '2015-04-01',
'2016-03-31', '2017-03-31', '2018-04-02', '2019-04-01'],
dtype='datetime64[ns]', freq=None)
使用CustomBusinessDay
并添加0*CustCal
以获取CustCal
一部分的日期时出现问题吗?
还有另一种有效的方法来实现这一目标吗?
结果应为:
tempRestrikeDates
Out[35]:
DatetimeIndex(['2008-04-02', '2009-04-02', '2010-04-01', '2011-04-04',
'2012-04-02', '2013-04-01', '2014-04-01', '2015-04-01',
'2016-03-31', '2017-03-31', '2018-04-02', '2019-04-01'],
dtype='datetime64[ns]', freq=None)