【发布时间】:2018-01-05 01:00:59
【问题描述】:
请考虑此日期时间索引及其缺少的一个日期。它没有任何频率(不规则的时间序列)。
index = pd.DatetimeIndex(pd.to_datetime(pd.Series([ '2018-01-02', '2018-01-03', None, '2018-01-05'])))
目标:将日期时间索引元素移一个可用和业务 一天过去了。
我有什么:
index2 = index.shift(1, 'B')
或:
index2 = index + BDay(1)
结果:
In [156]:index
Out[156]: DatetimeIndex(['2018-01-02', '2018-01-03', 'NaT', '2018-01-05'], dtype='datetime64[ns]', freq=None)
In [157]:index2
Out[157]: DatetimeIndex(['2018-01-03', '2018-01-04', 'NaT', '2018-01-08'], dtype='datetime64[ns]', freq=None)
问题: index2 中的2018-01-04 实际上是2018-01-03 之后的下一个工作日,但它不在index 中,这意味着该日期的数据不可用。因此,代码将索引向前移动了一个工作日,但没有将一个业务和可用日期向前移动。
期望的结果:
In[157]:index2
Out[157]: DatetimeIndex(['2018-01-03', '2018-01-05', 'NaT', 'NaT'], dtype='datetime64[ns]', freq=None)
谢谢。
【问题讨论】:
-
你的输入'2018-01-02', '2018-01-03', None, '2018-01-04', 另一个输入['2018-01-02', '2018 -01-03', 'NaT', '2018-01-05'],我们应该使用哪一个
-
为什么你的第一个索引显示
'2018-01-04',而你的第二个索引显示'2018-01-05'? -
请定义什么是available?
-
我会使用自定义函数,在循环中添加一个工作日并检查它是否可用并且仍然低于或等于最后一个可用日。
-
@Wen 对不起,修正了不一致的地方。