使用 Pandas:我有一個非常大的資料框,其中一列(從許多 .csv 和 .xlsx 檔案匯入)具有不同格式的混合日期。我設法統一所有分隔符 /.- 但仍然無法將日期 YYYY/MM/DD 和 DD/MM/YYYY 統一為其中之一(與哪個不真正相關)。
我在一個非常大的 DataFrame 中有一個列:
Date
15-11-2021
2021-11-11
2021-11-20
19-11-2021
...
我需要:
Date
15-11-2021
11-11-2021
20-11-2021
19-11-2021
...
我嘗試了舊問題的解決方案。502726 和沒有。49435438 但沒用
像這樣:
datetime.datetime.strptime(df['Date'], "%d-%m-%Y").strftime("%Y-%m-%d")
但給出了錯誤:AttributeError: type object 'datetime.datetime' has no attribute 'datetime'
或者函式定義:
new_date_format='%Y-%m-%d'
old_date_format='%d-%m-%Y'
def conv_dates_series(df, col, old_date_format, new_date_format):
df[col] = pd.to_datetime(df[col], format=old_date_format).dt.strftime(new_date_format)
return df
但是當發現意外的正確格式時會很快回傳錯誤(可能 if/then 子句在這里會有所幫助,但我不知道如何與 to_datetime(format) 一起使用。
任何的想法?謝謝!
uj5u.com熱心網友回復:
假設Date列值是字串(并假設沒有任何奇怪的格式,例如%Y-%d-%m),我可以簡單地使用pd.Timestamp:
In [4]: df
Out[4]:
Date
0 15-11-2021
1 2021-11-11
2 2021-11-20
3 19-11-2021
In [5]: df["Date"].apply(pd.Timestamp)
Out[5]:
0 2021-11-15
1 2021-11-11
2 2021-11-20
3 2021-11-19
Name: Date, dtype: datetime64[ns]
或者,您可以使用pd.to_datetime(df["Date"]).
uj5u.com熱心網友回復:
您可以簡單地使用pd.to_datetime并讓 Pandas 推斷出正確的格式:
>>> pd.to_datetime(df['Date'])
0 2021-11-15
1 2021-11-11
2 2021-11-20
3 2021-11-19
Name: Date, dtype: datetime64[ns]
uj5u.com熱心網友回復:
最后我找到了解決方案,相當簡單:
df['Date'] = pd.to_datetime(df['Date']).dt.strftime('%Y-%m-%d')
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/409861.html
標籤:
