【发布时间】:2017-03-09 14:51:35
【问题描述】:
具有列 dateMillis 的数据框,其中包含从纪元开始以毫秒为单位的时间戳
In [5]: df.head(5)
Out[5]:
custId dateMillis
0 31403 1488232800000
1 28197 1488232800013
2 30158 1488232800026
3 28538 1488232800030
4 28538 1488232800033
如果我使用 python 的 datetime 将第一行中 dateMillis 的值转换为 datetime,我会得到以下结果
In [8]: print datetime.datetime.fromtimestamp(df.ix[0]['dateMillis']/1000.0)
2017-02-27 17:00:00
这是正确的。但是,如果我使用熊猫的 to_datetime 转换列 dateMillis,我会得到 p>
In [11]: df['date'] = pd.to_datetime(df['dateMillis'], unit='ms')
In [12]: df.head(5)
Out[12]:
custId dateMillis date
0 31403 1488232800000 2017-02-27 22:00:00.000
1 28197 1488232800013 2017-02-27 22:00:00.013
2 30158 1488232800026 2017-02-27 22:00:00.026
3 28538 1488232800030 2017-02-27 22:00:00.030
4 28538 1488232800033 2017-02-27 22:00:00.033
提前五个小时。机器本身有 EST 时区,所以看起来 pandas 将 datetime 转换为本地时区。
In [15]: time.tzname
Out[15]: ('EST', 'EDT')
我希望 to_datetime 与 datetime.fromtimestamp 一致。我为 utc 参数尝试了各种值(真/假/无),但没有帮助。
【问题讨论】: