![](/img/trans.png)
[英]Pandas DataFrame Calculate time difference between 2 columns on specific time range
[英]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.