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

时间:2020-02-17 00:18:34

标签: python pandas datetime

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

以下是有关此问题的一些说明:

1。关于您的错误

这给出了错误-

您解析了错误的日期时间格式,这将导致错误。要获取正确的格式,请检查此https://wordpress.org/plugins/premmerce-woocommerce-brands/。此问题的正确格式为:"%Y-%m-%d %H:%M:%S %z UTC"

2。时区限制熊猫

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