Pandas - 在groupby之后选择多个嵌套行

时间:2018-04-28 16:26:00

标签: pandas

给出以下数据集:

df = pd.DataFrame({'a'   : [1, 1, 3],
           'b'   : [4, 5, 6],
           'c'   : [7, 8, 9],
           'cat_1' : ['a', 'a', 'b'],
           'cat_2' : ['a', 'b', 'c']})

df 

group_cat = df.groupby(['cat_1', 'cat_2'])

agg_cat = group_cat.agg({'a':['sum','mean'], 'b':['min','max']})

print(agg_cat)

              a        b    
              sum mean min max
cat_1 cat_2                 
a     a       1    1   4   4
      b       1    1   5   5
b     c       3    3   6   6

使用xs()我可以选择特定的嵌套列:

print(agg_cat.xs([('a','sum'),('b','max')], axis = 1))

              a   b
            sum max
cat_1 cat_2        
a     a       1   4
      b       1   5
b     c       3   6

但是当我尝试在行级(axis=0)应用相同的逻辑时,我收到一个错误:

print(agg_cat.xs([('a','a'),('b','c')], axis = 0))

KeyError: (('a', 'a'), ('b', 'c'))

1 个答案:

答案 0 :(得分:0)

您需要使用.loc索引器按索引过滤数据。

agg_cat.loc[[('a','a'),('b','c')]]

                  a        b    
            sum mean min max
cat_1 cat_2                 
a     a       1    1   4   4
b     c       3    3   6   6