Holly Huang
Holly Huang

Reputation: 31

time data doesn't match format specified

I am trying to convert the string to the type of 'datetime' in python. My data match the format, but still get the 'ValueError: time data 11 11 doesn't match format specified' I am not sure where does the "11 11" in the error come from.

My code is

train_df['date_captured1'] = pd.to_datetime(train_df['date_captured'], format="%Y-%m-%d %H:%M:%S")

Head of data is

print (train_df.date_captured.head())

0    2011-05-13 23:43:18
1    2012-03-17 03:48:44
2    2014-05-11 11:56:46
3    2013-10-06 02:00:00
4    2011-07-12 13:11:16
Name: date_captured, dtype: object

I tried the following by just selecting the first string and running the code with same datetime format. They all work without problem.

dt=train_df['date_captured']
dt1=dt[0]
date = datetime.datetime.strptime(dt1, "%Y-%m-%d %H:%M:%S")
print(date)

2011-05-13 23:43:18

and

dt1=pd.to_datetime(dt1, format='%Y-%m-%d %H:%M:%S')
print (dt1)

2011-05-13 23:43:18

But why wen I using the same format in pd.to_datetime to convert all the data in the column, it comes up with the error above? Thank you.

Upvotes: 1

Views: 5780

Answers (1)

Holly Huang
Holly Huang

Reputation: 31

I solved it.

train_df['date_time'] = pd.to_datetime(train_df['date_captured'], errors='coerce')
print (train_df[train_df.date_time.isnull()])

I found in line 100372, the date_captured value is '11 11'

        category_id date_captured    ...     height  date_time
100372           10         11 11    ...        747        NaT

So the code with errors='coerce' will replace the invalid parsing with NaN. Thank you.

Upvotes: 2

Related Questions