如何解决Python-自pandas df中的纪元以来将日期时间对象转换为s后的偏移量
我正在转换一些时间戳,例如:
tmp['start'] = tmp['chargingstart'].apply(lambda x: datetime.strptime(x[:19],"%Y-%m-%d %H:%M:%s").timestamp())
我认为这行得通。我期待正整数,但我检查
tmp.loc[(tmp['start']) < 0][['chargingstart','start']]
我明白了
chargingstart start
50053 1970-01-01 00:00:48+00 -3552.0
278149 1970-01-01 00:00:17+00 -3583.0
278150 1970-01-01 00:00:16+00 -3584.0
278152 1970-01-01 00:00:17+00 -3583.0
278153 1970-01-01 00:00:17+00 -3583.0
... ... ...
1590705 1970-01-01 00:00:00+00 -3600.0
1590978 1970-01-01 00:00:00+00 -3600.0
1591012 1970-01-01 00:00:00+00 -3600.0
1702854 1970-01-01 00:00:00+00 -3600.0
1772270 1970-01-01 00:00:00+00 -3600.0
我不知道为什么我会得到偏移量。有什么提示吗?
编辑:如果我分两步做同样的事情,它似乎有效。这是为什么?
tmp['convertToDtObject'] = tmp['chargingstart'].apply(lambda x: datetime.strptime(x[:19],"%Y-%m-%d %H:%M:%s"))
tmp['start'] = tmp['convertToDtObject'].apply(lambda x: x.timestamp())
tmp.loc[(tmp['start']) < 0][['chargingstart','convertToDtObject','start']]
解决方法
字符串采用 UTC 时区,您的格式字符串似乎不支持 tz。如果我使用以下内容,我会得到正确答案:
In [33]: from dateutil.parser import parse
In [34]: parse('1970-01-01 00:00:48+00')
Out[34]: datetime.datetime(1970,1,48,tzinfo=tzutc())
In [35]: parse(s).timestamp()
Out[35]: 48.0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。