dta_h是一个 DataFrame 并且dta_h.Datetime看起来像这样:
0 2013-03-01 00:00:00
1 2013-02-28 23:00:00
2 2013-02-28 22:00:00
3 2013-02-28 21:00:00
...
Name: Datetime, Length: 63001, dtype: datetime64[ns]
直到最近(我稍后会解释这意味着什么)我可以这样做来减去每个时间段的一个小时:
dta_h.Datetime-np.timedelta(hours=1)
但是现在,如果我执行上述操作,我会得到:
0 2013-03-01 00:11:34.967296
1 2013-02-28 23:11:34.967296
2 2013-02-28 22:11:34.967296
3 2013-02-28 21:11:34.967296
...
这显然不是我想要的。然而,这:
[i-timedelta(hours=1) for i in dta_h.Datetime ]
仍然产生所需的结果:
0 2013-02-28 23:00:00
1 2013-02-28 22:00:00
2 2013-02-28 21:00:00
3 2013-02-28 20:00:00
....
Length: 63001, dtype: datetime64[ns]
我 99% 确定这个问题是在我升级到 Pandas 0.11 时开始的。我一直在文档中寻找可能无法成功解释的版本中的任何差异。我还发现了这个帖子:
pandas 处理 numpy timedelta64[ms]
指的是这个熊猫问题
https://github.com/pydata/pandas/issues/3009
根据我在那里读到的内容,我尝试了:
dta_h.Datetime-np.timedelta64(hours=1)
但这实际上什么也没做:
0 2013-03-01 00:00:00
1 2013-02-28 23:00:00
2 2013-02-28 22:00:00
3 2013-02-28 21:00:00
...
知道为什么 1) df-np.timedelta 停止工作,2) 为什么理解列表版本仍然有效?谢谢你的帮助。
仅供参考,我使用的是 Numpy 1.6.2,而且,我之前说过,最近从 Pandas 0.9 升级到 0.11