Разделить DatetimeIndex на дату и время MultiIndex удобно в Пандах

Допустим, у меня есть данные DatetimeIndex:ed, подобные этим (конечно, будет несколько дней):

                             X      Y       Z
timestamp           
2013-01-02 10:00:13.295000   366    -8242   -1820
2013-01-02 10:00:13.329000   366    -8016   -1820
2013-01-02 10:00:13.352000   32     -8016   -1820
2013-01-02 10:00:13.882000   32     -9250   -1820
2013-01-02 10:00:15.076000  -302    -9250   -1820

и я хочу это MultiIndexed, как это:

                                 X      Y       Z
Date           Time     
2013-01-02     10:00:13.295000   366    -8242   -1820
               10:00:13.329000   366    -8016   -1820
               10:00:13.352000   32     -8016   -1820
               10:00:13.882000   32     -9250   -1820
               10:00:15.076000  -302    -9250   -1820

Я знаю, что вы могли бы (вероятно) извлечь DatetimeIndex, разделить его с помощью.date() и.time() на два столбца и установить его в качестве нового индекса для Dataframe, но есть ли более "пандейский" способ сделать это? Казалось бы, такая функциональность пригодится...

1 ответ

Решение

Лучший способ, о котором я могу думать, это

In [13]: df.index = pd.MultiIndex.from_arrays([df.index.date, df.index.time], names=['Date','Time'])

In [14]: df
Out[14]: 
                              X     Y     Z
Date       Time                            
2013-01-02 10:00:13.295000  366 -8242 -1820
           10:00:13.329000  366 -8016 -1820
           10:00:13.352000   32 -8016 -1820
           10:00:13.882000   32 -9250 -1820
           10:00:15.076000 -302 -9250 -1820

[5 rows x 3 columns]
Другие вопросы по тегам