首页 > 其他 > 详细

用 pandas 将时间戳转为日期时日期结果不对?可能是时区的问题。

时间:2021-02-05 23:14:19      阅读:51      评论:0      收藏:0      [点我收藏+]

问题描述

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

我在用 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‘)

运行一下:

技术分享图片

问题解决。

用 pandas 将时间戳转为日期时日期结果不对?可能是时区的问题。

原文:https://www.cnblogs.com/stycoding/p/14379499.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!