2
                       open      high       low     close    volume
Ticker  date
NAVER   2008-11-28  185724.0  192776.0  177887.0  191993.0  399179.0
        2008-12-01  191209.0  191993.0  178671.0  178671.0  258409.0
SAMSUNG 2008-11-28  185724.0  192776.0  177887.0  191993.0  399179.0
        2008-12-01  191209.0  191993.0  178671.0  178671.0  258409.0
        2008-12-02  156729.0  174753.0  156729.0  169267.0  296473.0

What I had tried,

data_dfs.index = data_dfs.index.set_levels([data_dfs.index.levels[:-1], pd.to_datetime(data_dfs.index.levels[-1])])

It works but the problem is that it remove index name 'Ticker'....

So, I tried data_dfs = data_dfs.rename_axis(['Ticker', 'date'], axis=1) but it doesn't set index name as 'Ticker'...

How can I deal with it?

1 Answer 1

1

I think you can use set_levels with parameter level=1 and for values use get_level_values:

mux = pd.MultiIndex.from_product([['NAVER'], ['2018-11-28','2018-12-01','2018-12-02']], 
                                 names=['Ticker', 'date'])
df = pd.DataFrame({'open':[1,2,3]}, 
                  index=mux)

df.index = df.index.set_levels(pd.to_datetime(df.index.get_level_values(1)), level=1)
print(df)
                   open
Ticker date            
NAVER  2018-11-28     1
       2018-12-01     2
       2018-12-02     3

print(df.index.get_level_values(1))
DatetimeIndex(['2018-11-28', '2018-12-01', '2018-12-02'],
dtype='datetime64[ns]', name='date', freq=None)
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks, u save my life again :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.