我有一個資料框,其中有一列日期為 MMDDYYY 格式。我想將日期轉換為 YYYY-MM-DD 格式。這適用于大多數日期。但是對于從 1 開始的日期,會給出錯誤的輸出。在此示例中,最后 3 行是錯誤的。有很多行,所以我無法硬編碼正確的值。
OriginalDates (MMDDYYYY) OutputDates (YYYYMMDD) ExpectedDates (YYYYMMDD) Correct Output?
5011989 1989-05-01 1989-05-01 Yes
6011989 1989-06-01 1989-06-01 Yes
12042009 2009-12-04 2009-12-04 Yes
01012001 2001-01-01 2001-01-01 Yes
1161955 1955-11-06 1955-01-16 No
1051991 1991-10-05 1991-01-05 No
1011933 1933-10-01 1933-01-01 No
我的代碼:
df['OutputDates'] = pd.to_datetime(df['OriginalDates'], format='%m%d%Y')
df['OutputDates'] = pd.to_datetime(df['OutputDates'], format='%Y-%m-%d')
uj5u.com熱心網友回復:
您可以使用字串切片,而不是最干凈的解決方案,但它可以滿足您的要求:
def format_date(x):
if len(x) == 7:
return x[-4:] '-' x[-6:3] '-' x[-8:1]
if len(x) == 8:
return(x[-4:] '-' x[2:4] '-' x[0:2])
df['OriginalDates (MMDDYYYY)'] = df['OriginalDates (MMDDYYYY)'].apply(lambda x: format_date(str(x)))
df['OriginalDates (MMDDYYYY)'] = pd.to_datetime(df['OriginalDates (MMDDYYYY)'], format='%Y-%d-%m')
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/444018.html
