我有以下数据框f26,f27,f28,f29,f30,f31,f322018-03-11 03:00:00-04:00,36.0,21,0.00,55,11.5,3102018-03-11 01:00:00-04:00,36.0,21,0.00,54,12.7,3202018-03-11 00:00:00-05:00,37.0,20,0.00,50,12.7,3102018-03-10 23:00:00-05:00,37.0,19,0.00,48,15.0,3102018-03-10 22:00:00-05:00,38.0,20,0.00,48,16.1,320当我尝试转换f26为日期时间时,由于某种原因它失败了。我怀疑这与字符串末尾的时区有关。但我不确定如何处理。我不知道我会收到什么时间格式,而且我有数百个不同的数据集。我正在执行以下操作:key = "f26"df[key] = pd.to_datetime(df[key]) 我假设 pandas 会识别如何处理不同的日期时间格式,但显然它失败了,我不知道如何处理它。错误:Tz-aware datetime.datetime cannot be converted to datetime64 unless utc=True因此,如果我添加 utc=True 它可以工作。我目前的解决方案是尝试在没有 utc 的情况下进行转换,如果我发现异常,请尝试 utc。我不确定是否有更好的解决方案以及如何在没有一堆 try-except 块的情况下捕获所有可能的格式,因为我有许多具有许多不同格式的表。
3 回答
墨色风雨
TA贡献1853条经验 获得超6个赞
以下解决方案对我有用:
df['local_date'] = pd.to_datetime(df['hour'], infer_datetime_format=True, utc=True ) df['local_date'] = df['local_date'].dt.tz_localize('UTC')
显然,这些方法可以连接起来,但为了便于阅读而分开。
utc = True:返回UTC DatetimeIndex,这是允许tz_localize()方法所需的。
infer_datetime_format = True:另一个有用的参数,它试图推断日期时间字符串的格式。
大熊猫 0.19中的参考
同样的问题:https ://stackoverflow.com/a/61642126/5985898
慕村9548890
TA贡献1884条经验 获得超4个赞
试试下面:
>>> from dateutil.parser import parse
>>> df[key].apply(lambda x: parse(x))
LEATH
TA贡献1936条经验 获得超6个赞
这是我的示例代码:
input_data = {
'f26': ['2018-03-10 22:00:00-05:00', '2018-03-10 22:00:00-05:00', '2018-03-10 22:00:00-05:00']
}
df = pd.DataFrame(data=input_data)
key = "f26"
df[key] = pd.to_datetime(df[key])
我能够成功运行它。请提供您的错误消息或更新您的示例代码,以便我们重现错误。
添加回答
举报
0/150
提交
取消