pandas在多级索引数据框中选择行

时间:2017-05-30 08:05:34

标签: python 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()

返回的对象是DataFrame,虽然实现了多级索引,但操作如下:

group_double_col[('a')] 

失败。

据我所知,在第一种情况下返回一个系列,在第二种情况下返回一个数据帧,但我仍然认为该功能应该可以正常使用数据帧。

后续问题是,在数据框的情况下有哪些解决方法?

目前我这样做:

grouped[(grouped.index.get_level_values('index_1')=='a')]

但我怀疑是否有更有效的方法。

1 个答案:

答案 0 :(得分:4)

您可以使用xs

switch (indexPath.row) {
case 0:
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell1", for: indexPath) as! PrefCell1TableViewCell
    return cell
case 1:
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell2", for: indexPath) as! PrefCell1TableViewCell
    return cell
case 2:
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell1", for: indexPath) as! PrefCell1TableViewCell
    return cell
default:
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell1", for: indexPath) as! PrefCell1TableViewCell
    return cell
}