多索引第二层的时间片
time slice on second level of multiindex
pandas 允许对时间索引进行很酷的切片。例如,我可以通过以下方式对从 2012 年 1 月到 2012 年 3 月的数据帧 df
进行切片:
df['2012-01':'2012-03']
但是,我有一个数据框 df
,它带有一个多索引,其中时间索引是第二级。看起来像:
A B C D E
a 2001-01-31 0.864841 0.789273 0.370031 0.448256 0.178515
2001-02-28 0.991861 0.079215 0.900788 0.666178 0.693887
2001-03-31 0.016674 0.855109 0.984115 0.436574 0.480339
2001-04-30 0.120924 0.046013 0.659807 0.210534 0.694029
2001-05-31 0.788149 0.296244 0.478201 0.845042 0.437814
b 2001-01-31 0.497646 0.349958 0.223227 0.812331 0.975012
2001-02-28 0.542572 0.472267 0.276186 0.970909 0.138683
2001-03-31 0.960813 0.666942 0.069349 0.282741 0.127992
2001-04-30 0.491422 0.678742 0.048784 0.612312 0.713472
2001-05-31 0.718721 0.504403 0.069047 0.253682 0.836386
我仍然可以通过以下方式在任何特定级别上使用上述方法进行切片:
df.loc['a']['2012-01':'2012-03']
但这仅适用于 level0 == 'a'
。
如何对 level0
中的所有值执行此操作?我期待这样的事情:
A B C D E
a 2001-01-31 0.864841 0.789273 0.370031 0.448256 0.178515
2001-02-28 0.991861 0.079215 0.900788 0.666178 0.693887
2001-03-31 0.016674 0.855109 0.984115 0.436574 0.480339
b 2001-01-31 0.497646 0.349958 0.223227 0.812331 0.975012
2001-02-28 0.542572 0.472267 0.276186 0.970909 0.138683
2001-03-31 0.960813 0.666942 0.069349 0.282741 0.127992
使用pd.IndexSlice
df.loc[pd.IndexSlice[:, '2001-01':'2001-3'], :]
pandas 允许对时间索引进行很酷的切片。例如,我可以通过以下方式对从 2012 年 1 月到 2012 年 3 月的数据帧 df
进行切片:
df['2012-01':'2012-03']
但是,我有一个数据框 df
,它带有一个多索引,其中时间索引是第二级。看起来像:
A B C D E
a 2001-01-31 0.864841 0.789273 0.370031 0.448256 0.178515
2001-02-28 0.991861 0.079215 0.900788 0.666178 0.693887
2001-03-31 0.016674 0.855109 0.984115 0.436574 0.480339
2001-04-30 0.120924 0.046013 0.659807 0.210534 0.694029
2001-05-31 0.788149 0.296244 0.478201 0.845042 0.437814
b 2001-01-31 0.497646 0.349958 0.223227 0.812331 0.975012
2001-02-28 0.542572 0.472267 0.276186 0.970909 0.138683
2001-03-31 0.960813 0.666942 0.069349 0.282741 0.127992
2001-04-30 0.491422 0.678742 0.048784 0.612312 0.713472
2001-05-31 0.718721 0.504403 0.069047 0.253682 0.836386
我仍然可以通过以下方式在任何特定级别上使用上述方法进行切片:
df.loc['a']['2012-01':'2012-03']
但这仅适用于 level0 == 'a'
。
如何对 level0
中的所有值执行此操作?我期待这样的事情:
A B C D E
a 2001-01-31 0.864841 0.789273 0.370031 0.448256 0.178515
2001-02-28 0.991861 0.079215 0.900788 0.666178 0.693887
2001-03-31 0.016674 0.855109 0.984115 0.436574 0.480339
b 2001-01-31 0.497646 0.349958 0.223227 0.812331 0.975012
2001-02-28 0.542572 0.472267 0.276186 0.970909 0.138683
2001-03-31 0.960813 0.666942 0.069349 0.282741 0.127992
使用pd.IndexSlice
df.loc[pd.IndexSlice[:, '2001-01':'2001-3'], :]