1
我想知道为什么功能存在以按键访问多级索引序列的行,但它不存在于数据框中。pandas在多级索引数据框中选择行
例如,我有以下数据帧:
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()
返回的对象是一个数据帧,虽然多级索引被实现,如操作
group_double_col[('a')]
失败。
我知道在第一种情况下会返回一个序列,而在第二种情况下会返回一个数据帧,但我仍然认为该功能对数据框应该可以正常工作。
后续问题是,在数据框的情况下有什么解决方法?
目前我做的:
grouped[(grouped.index.get_level_values('index_1')=='a')]
,但我的问题,如果有一个更有效的方法。
我才意识到你也可以这样做'group_double_col.reset_index()',然后切片像一个普通的数据帧。 – lhay86
是的,这是另一种解决方案。这取决于你需要什么。因为如果用'索引'选择是非常快的。 – jezrael