我想知道为什么存在通过键访问多级索引系列的行的功能,但是对于 dataframe 却不存在.
例如,我有以下 dataframe :
index_1 index_2 num_1 num_2
0 a c 1 2
1 a c 4 3
2 a c 3 4
3 a d 2 3
4 b d 3 1
5 b d 2 3
我现在执行如下的groupby操作:
group_single_col = test.groupby(['index_1', 'index_2'])['num_1'].max()
我这样做没有问题:
group_single_col[('a')]
要么
group_single_col[('a', 'c')]
这是一个了不起的功能,使我可以基于不同索引级别的值进行切片.
但是,如果我进行groupby并提取多个列,如下所示:
group_double_col = test.groupby(['index_1', 'index_2'])[['num_1', 'num_2]].max()
返回的对象是一个DataFrame,尽管实现了多级索引,但操作类似于:
group_double_col[('a')]
失败.
我知道在第一种情况下返回了一系列,而在第二种情况下返回了一个 dataframe ,但是我仍然认为该功能应该可以很好地与 dataframe 一起使用.
后续问题是,对于 dataframe ,有什么解决方法?
目前,我正在:
grouped[(grouped.index.get_level_values('index_1')=='a')]
但我想知道是否有更有效的方法.