![](/img/trans.png)
[英]pandas to_datetime formats date from same column in different formats
[英]How to convert two different date formats from a pandas dataframe column into same format?
最直觀的解決方案是編寫自定義轉換 function,類似於:
def myDateConv(tt):
sep = tt[2]
if sep == '-':
return pd.to_datetime(tt, format='%d-%m-%Y')
elif sep == '/':
return pd.to_datetime(tt, format='%m/%d/%Y')
else:
return tt
然后將其作為相關列的轉換器傳遞:
df = pd.read_csv('Input.csv', converters={'Date': myDateConv})
我准備了一個 CSV 文件,它使用read_csv讀取,沒有任何自定義轉換器,給出了原始內容和object類型的兩列:
Date Input format
0 03-05-2020 DD-MM-YYYY
1 05/07/2020 MM/DD/YYYY
但是用上面的轉換器讀取相同的文件給出了:
Date Input format
0 2020-05-03 DD-MM-YYYY
1 2020-05-07 MM/DD/YYYY
使用datetime64[ns]類型的Date列和從 5 月開始的兩個日期,正如預期的那樣。
或者,如果您有來自其他來源的 DataFrame 並且想要轉換此列,請運行:
df.Date = df.Date.apply(myDateConv)
如果您使用的是 pandas 版本 1.xx,您可以使用以下解決方案:
pd.to_datetime(["11-08-2018", "05-03-2016", "08/30/2017", "09/21/2018"], infer_datetime_format=True, dayfirst=True).strftime("%m/%d/%Y")
這給出了以下結果:
Index(['08/11/2018', '03/05/2016', '08/30/2017', '09/21/2018'], dtype='object')
...這里的重要論點是dayfirst=True 。
有關更多信息,請參閱pd.to_datetime
文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.