Reputation: 1293
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
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 NaN
s 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