我怀疑很多人的数据已经遇到此问题的时间序列,和熊猫的工作似乎并没有提供一个简单的解决方案结束(尚未!):大熊猫时间序列重新采样某一天
假设:
- 您有一系列收盘价日常数据的时间序列,按日期(日期)进行了索引。
- 今天是19JUN。最后关闭数据值是18JUN。
- 您想要将日常数据重新采样到OHLC柱,并以某个给定的频率(假设M或2M)结束18JUN。
所以对于M频率,最后一棒是19MAY-18JUN,前一个19APR-18MAY,等等...
ts.resample('M', how='ohlc')
会做重采样,但 'M' 是“end_of_month '期间,所以结果会给予2014-05的整整一个月和2014-06的2周期限,所以你最后的酒吧不会是'月度酒吧'。这不是我们想要的!
由于2M
频率,考虑到我的样本时间序列,我的测试给了我最后一个小节标签为2014-07-31(以前标签为2014-05-31),这是相当误导性的,因为没有关于JUL的数据。 ..所谓的最后2个月酒吧再次只是覆盖最近的2周。
正确DatetimeIndex容易与创建:
pandas.date_range(end='2014-06-18', freq='2M', periods=300) + datetime.timedelta(days=18)
(熊猫文档更喜欢通过
pandas.date_range(end='2014-06-18', freq='2M', periods=300) + pandas.tseries.offsets.DateOffset(days=18)
做同样的事情,但我的测试表明,该方法虽然较为“pandaïc”是2x更慢!)
无论采用哪种方法,我们都无法将正确的DatetimeIndex应用于ts.resample()。
似乎熊猫开发团队(Date ranges in Pandas)已经意识到这个问题,但与此同时,您如何解决这个问题才能让OHLC的滚动频率在时间序列的最后一天处于停滞状态?
看来,如果day_anchor是>例如28(用于FEB最后一天)失败,有一个“ValueError异常:白天是超出范围的一个月” – comte