Home > Enterprise >  Pandas Mixed Date Format Values in One Column
Pandas Mixed Date Format Values in One Column

Time:12-14

df = pd.Series('''18-04-2022
2016-10-05'''.split('\n') , name='date'
).to_frame()

df['post_date'] = pd.to_datetime(df['date'])
print (df)

         date  post_date
0  18-04-2022 2022-04-18
1  2016-10-05 2016-10-05

When trying to align the date column into one consistent format, I get an error such as above.
The error is that values have mixed date formats dd-mm-yyyy (18-04-2022) and yyyy-dd-mm (2016-10-05).

What I want to have is below (yyyy-mm-dd) for both of the above inconsistent formats:

         date  post_date
0  18-04-2022 2022-04-18
1  2016-10-05 2016-05-10

Appreciate it in advance.

CodePudding user response:

You can be explicit and parse the two possible formats one after the other:

df['post_date'] = (
 pd.to_datetime(df['date'], format='%d-%m-%Y', errors='coerce')
   .fillna(
 pd.to_datetime(df['date'], format='%Y-%d-%m', errors='coerce')
    )
 )

Output:

         date  post_date
0  18-04-2022 2022-04-18
1  2016-10-05 2016-05-10
  • Related