scott martin
scott martin

Reputation: 1293

Pandas - Formatting date column of different format in the same column

I am trying to convert a timestamp column to the below format:

Expected output: 2019-05-20 13:25:00

Given below is how my dataframe is:

item, date
item_1, 2019-05-19 22:47:51.722615
item_2, 22/05/19 9:43

I tried to do the below:

pd.to_datetime(df['date'], format='%Y-%m-%d %H:%M:%S').dt.strftime(
    '%Y-%m-%d %H:%M:%S')

I keep getting an error ValueError: time data 22/05/19 9:43 doesn't match format specified

Upvotes: 1

Views: 37

Answers (1)

jezrael
jezrael

Reputation: 862631

If possible, remove parameter format:

df['date1'] = pd.to_datetime(df['date']).dt.strftime('%Y-%m-%d %H:%M:%S')

If need specify all formats, add parameter errors='coerce' for NaNs for not matched values, so then use Series.round for final datetimes:

d1 = pd.to_datetime(df['date'], format='%Y-%m-%d %H:%M:%S', errors='coerce')
d2 = pd.to_datetime(df['date'], format='%d/%m/%y %H:%M', errors='coerce')

df['date2'] = d1.combine_first(d2).dt.strftime('%Y-%m-%d %H:%M:%S')
print (df)
     item                        date                date1  \
0  item_1  2019-05-19 22:47:51.722615  2019-05-19 22:47:51   
1  item_2               22/05/19 9:43  2019-05-22 09:43:00   

                 date2  
0  2019-05-19 22:47:51  
1  2019-05-22 09:43:00  

Upvotes: 2

Related Questions