我有一个包含两列的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)
答案 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时区。