问题描述

刚在做淘宝购物用户行为分析项目,数据是从天池上下载下来的,数据集里面有一个字段是时间戳。时间戳可以理解成还未格式化的时间。

我在用 pandas 中的 to_datetime() 将时间戳转化为日期时,发生了有趣的事情。

可以看到,下图中,转化后的时间是 2017-11-24 17:21:10。但明明这个数据集在天池的主页介绍中已经说明了,这个数据集中的数据是2017年11月25日至2017年12月3日之间的淘宝用户行为数据,那么怎么会出现11月24日这种数据呢?

于是在网上找了时间戳转日期的在线工具,输入该日期的时间戳后,看到这样的结果:

怎么会发生这种事呢?这个问题肯定不能忽视啊。于是开始研究。

可以观察到,2017-11-24 17:21:102017-11-25 01:21:10 之间相差了 8 个小时。于是就想到会不会和时区有关?又想到 pandas 是国外团队开发的,那十有八九是跟时区有关了。

于是上网查资料,从一篇博客得知,pandas 返回的 2017-11-24 17:21:10 这个结果是格林威治标准时间,与北京时间差了 8 小时。又查了 to_datetime() 这个方法的官方文档,得知有一个参数 origin ,可以指定时间戳的起始时间。

于是将代码改为,也就是以北京时间为起始时间:

df[\'Time\'] = pd.to_datetime(df[\'Timestamp\'], origin=\'1970-01-01 08:00:00\', unit=\'s\')

运行一下:

问题解决。

版权声明:本文为stycoding原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/stycoding/p/14379499.html