Parse pandas (multi)index to datetime

Viewed 10457

I have multi-index df as follows

                x  y
id  date            
abc 3/1/1994  100  7
    9/1/1994   90  8
    3/1/1995   80  9

Where dates are stored as str.

I want to parse date index. The following statement

df.index.levels[1] = pd.to_datetime(df.index.levels[1])

returns error:

TypeError: 'FrozenList' does not support mutable operations.
4 Answers

You can use MultiIndex.set_levels with argument level

df.index = df.index.set_levels(pd.to_datetime(df.index.levels[1]), level=1)
# or if you want to use the level name
df.index = df.index.set_levels(pd.to_datetime(df.index.get_level_values('date')), level='date')
print(df)

                  x  y
id  date
abc 1994-03-01  100  7
    1995-03-01   90  8
    1994-09-01   80  9
Related