我有一个包含几列的大熊猫数据帧。其中两个是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")

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时区。
添加回答
举报
0/150
提交
取消