为了账号安全,请及时绑定邮箱和手机立即绑定

无法获取熊猫数据帧列之间的时间差

无法获取熊猫数据帧列之间的时间差

互换的青春 2022-08-02 10:39:12
我有一个包含几列的大熊猫数据帧。其中两个是start_time和end_time。在这些列中,值如下所示 - 2020-01-04 01:38:33 +0000 UTC我无法从这些字符串创建日期时间对象,因为我无法获得正确的格式 -df['start_time'] = pd.to_datetime(df['start_time'], format="yyyy-MM-dd HH:mm:ss +0000 UTC")我还尝试使用yy-MM-dd HH:mm:ss %z UTC作为格式这给出了错误 -ValueError: time data '2020-01-04 01:38:33 +0000 UTC' does not match format 'yyyy-MM-dd HH:mm:ss +0000 UTC' (match)
查看完整描述

2 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

您只需要使用正确的时间戳格式即可识别to_datetime

df['start_time'] = pd.to_datetime(df['start_time'], format="%Y-%m-%d %H:%M:%S +0000 UTC")


查看完整回答
反对 回复 2022-08-02
?
Qyouu

TA贡献1786条经验 获得超11个赞

下面有一些关于此问题的说明:


1. 关于您的错误


这给出了错误 -


您分析了错误的日期时间格式,这将导致错误。要获得正确的格式,请 https://strftime.org/ 选中此格式。此问题的正确格式为:"%Y-%m-%d %H:%M:%S %z UTC"


2. 熊猫时区限制


解析 UTC 时区为不适用于 pd。系列(它仅适用于索引值)。因此,如果您使用这个,它将不起作用:%z


df['startTime'] = pd.to_datetime(df.startTime, format="%Y-%m-%d %H:%M:%S %z UTC", utc=True)

解决方案是使用python内置库来推断日期时间数据:


from datetime import datetime

f = lambda x: datetime.strptime(x, "%Y-%m-%d %H:%M:%S %z UTC")

df['startTime'] = pd.to_datetime(df.startTime.apply(f), utc=True)

@fmarm答案仅帮助您处理日期和时间数据,而不是UTC时区。


查看完整回答
反对 回复 2022-08-02
  • 2 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号