Umar.H
Umar.H

Reputation: 23099

Turning an object into a datetime raising errors

a two part question

I'm attempting to transform a column into a datetime, an easy task I assume ? as I've done it before on different df's using the documentation without much issue.

  df = pd.DataFrame({'date' : ['24 October 2018', '23 April 2018', '18 January 2018']})
    print(df)
    date
0   24 October 2018
1   23 April 2018
2   18 January 2018

I was going through the datetime docs and I thought this piece of code would convert this column (which is an object) into a datetime

df.date =  pd.to_datetime(df['date'], format="%d-%m-%Y",errors='ignore')

which gives the error :

ValueError: time data '24 April 2018' does not match format '%d-%m-%Y' (match)

I've attempted playing with formulas and going through documentation to no avail!

Upvotes: 1

Views: 53

Answers (2)

timgeb
timgeb

Reputation: 78690

You are using the wrong format. '24 October 2018' uses format="%d %B %Y". The format specifiers are listed here.

edit: -Demo-

>>> import pandas as pd
>>> df = pd.DataFrame({'date':['24 October 2018', '23 April 2018', '18 January 2018']})
>>> df.date = pd.to_datetime(df['date'], format="%d %B %Y")
>>> 
>>> df
        date
0 2018-10-24
1 2018-04-23
2 2018-01-18
>>>
>>> df['date'][0]
Timestamp('2018-10-24 00:00:00')
>>> df['date'][0].month
10

edit 2: second question

>>> df['status'] = ['complete', 'complete', 'requested']
>>> df
        date     status
0 2018-10-24   complete
1 2018-04-23   complete
2 2018-01-18  requested
>>>
>>> df[df['status'] != 'complete']
        date     status
2 2018-01-18  requested

Upvotes: 1

J. Doe
J. Doe

Reputation: 3634

You can use pd.to_datetime or the datetime library

import datetime as dt
df['date'].apply(lambda x: dt.datetime.strptime(x,'%d %B %Y'))

Upvotes: 0

Related Questions