【发布时间】:2016-08-21 20:54:53
【问题描述】:
我有一个日期时间值列表,并希望将列表转换为 pandas.Series 实例。代码归结为以下内容:
from datetime import datetime
from datetime import timedelta
from dateutil import parser
day = parser.parse('2016-08-07T00:00:00Z')
dates = [day + timedelta(days=delta) for delta in range(80)]
pandas.Series(dates)
让我感到困惑的是,上面的代码返回了很多 1970-01-01 的日期时间实例:
0 2016-08-07 00:00:00+00:00
1 1970-01-01 00:00:00+00:00
2 1970-01-01 00:00:00+00:00
3 1970-01-01 00:00:00+00:00
4 1970-01-01 00:00:00+00:00
5 1970-01-01 00:00:00+00:00
...
但是,如果我转换任何 60 个或更少元素的子列表,我可以获得正确的系列:
from datetime import datetime
from datetime import timedelta
from dateutil import parser
day = parser.parse('2016-08-07T00:00:00Z')
dates = [day + timedelta(days=delta) for delta in range(80)]
pandas.Series(dates[0:60])
注意最后一行,pandas.Series 的输入变成了 dates[0:60]。实际上,它可以是任何日期[n:n+60],其中 n 介于 0 和 len(dates) - 60 之间。
0 2016-08-07 00:00:00+00:00
1 2016-08-08 00:00:00+00:00
2 2016-08-09 00:00:00+00:00
3 2016-08-10 00:00:00+00:00
4 2016-08-11 00:00:00+00:00
5 2016-08-12 00:00:00+00:00
...
我还阅读了关于 Series 和 datetime 的 Pandas 文档,并尝试了 Pandas 的时间戳,但仍然得到相同的结果。 Pandas 版本为 0.18.1,iPython notebook 内核使用的 Python 版本为 2.7.3:
print pandas.__version__
import sys
print(sys.version)
输出是
0.18.1
2.7.3 (default, Jun 22 2015, 19:33:41)
[GCC 4.6.3]
关于我应该调查什么以找出这个问题发生的原因以及如何解决它的任何提示?
谢谢,
【问题讨论】:
-
我无法将 pandas 0.18.1 与 Python(3.5.1 或 2.7.11)结合使用来重现此问题
-
@MaxU 奇怪。我的 pandas 是 0.18.1,Python 版本是 2.7.3。