Учитывая следующий набор данных:

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
Dan 28 Апр 2018 в 19:26

1 ответ

Лучший ответ

Вам необходимо использовать индексатор .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
0
YOLO 28 Апр 2018 в 17:03