为了账号安全,请及时绑定邮箱和手机立即绑定

无法在熊猫中转换为日期时间

无法在熊猫中转换为日期时间

慕勒3428872 2022-06-14 17:57:13
我有以下数据框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


查看完整回答
反对 回复 2022-06-14
?
慕村9548890

TA贡献1884条经验 获得超4个赞

试试下面:


>>> from dateutil.parser import parse

>>> df[key].apply(lambda x: parse(x)) 


查看完整回答
反对 回复 2022-06-14
?
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])

我能够成功运行它。请提供您的错误消息或更新您的示例代码,以便我们重现错误。


查看完整回答
反对 回复 2022-06-14
  • 3 回答
  • 0 关注
  • 174 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信