在Pandas中方便地将DatetimeIndex拆分为日期和时间的MultiIndex

8 投票
1 回答
7511 浏览
提问于 2025-04-18 05:53

假设我有一些带有日期时间索引的数据,像这样(当然会有好几天的数据):

                             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

我想把它变成多重索引,像这样:

                                 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

我知道你可以(可能)提取这个日期时间索引,用.date()和.time()把它分成两列,然后把这两列设为数据框的新索引,但有没有更“符合pandas风格”的方法呢?我觉得这种功能应该会很有用……

1 个回答

13

我想到的最好方法是

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]

撰写回答