繁体   English   中英

无法获得熊猫数据框列之间的时间差

[英]Unable to get time difference between to pandas dataframe columns

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

我也尝试使用yyyy-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)

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

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

关于这个问题有以下几点说明:

1.关于你的错误

这给出了错误 -

您解析了会导致错误的错误日期时间格式。 对于正确的格式,请检查这个https://strftime.org/ 此问题的正确格式是: "%Y-%m-%d %H:%M:%S %z UTC"

2. Pandas 时区限制

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

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 时区。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM