How do I extract the date/year/month from pandas dataframe?

Zhenyu Bo picture Zhenyu Bo · Jan 29, 2017 · Viewed 25.6k times · Source

I'm trying to extract year/date/month info from the 'date' column in pandas dataframe. Here is my sample code:

from datetime import datetime
def date_split(calendar):
  for row in calendar: 
    new_calendar={}
    listdate=datetime.strptime(row['date'],'%Y-%M-%D')

I haven't finished the complete code, but when i test run this part I keep getting error like this:

----> 7         listdate=datetime.strptime(row['date'],'%Y-%M-%D')
TypeError: string indices must be integers

Anyone has any idea?

Btw, this is the dataframe I use (calendar_data):

enter image description here

Answer

jezrael picture jezrael · Jan 29, 2017

It seems you need to_datetime:

print (df['date'].dtype)
object

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

print (df['date'].dtype)
datetime64[ns]

If need extract year, month and day to new columns:

df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
df['day'] = df['date'].dt.day

If need list of dates:

listdate = df['date'].dt.date.tolist()
print (listdate)

[datetime.date(2017, 9, 5), 
 datetime.date(2017, 9, 4),
 datetime.date(2017, 9, 3), 
 datetime.date(2017, 9, 2),
 datetime.date(2017, 9, 1)]