Python 无法获取到数据帧列之间的时间差

Python 无法获取到数据帧列之间的时间差,python,pandas,datetime,Python,Pandas,Datetime,我有一个包含两列的熊猫数据框架。其中两个是开始时间和结束时间。在这些列中,值类似于-2020-01-04 01:38:33+0000 UTC 我无法从这些字符串创建datetime对象,因为我无法获得正确的格式- 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作为格式 这就产生了错误- Value

我有一个包含两列的熊猫数据框架。其中两个是开始时间和结束时间。在这些列中,值类似于-2020-01-04 01:38:33+0000 UTC

我无法从这些字符串创建datetime对象,因为我无法获得正确的格式-

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\u datetime
将识别该格式

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

以下是有关此问题的一些注意事项:

1。关于您的错误

这就产生了错误-

您分析了错误的日期时间格式,这将导致错误。要获得正确的格式,请检查这个。此问题的正确格式为:
%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时区