我有以下數據框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條經驗 獲得超7個贊
這是我的示例代碼:
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
提交
取消