сгруппировать по подмножеству мультииндекса - PullRequest
0 голосов
/ 09 января 2020

У меня есть фрейм данных ( df ) с мультииндексом, состоящим из 3 индексов: ' A ', ' B ' и ' C 'скажем, и у меня есть столбец с именем Количество , содержащий числа с плавающей точкой.

Я хотел бы выполнить групповую операцию на' A 'и' B 'суммируя значения в Количество . Как бы я это сделал? Стандартный способ работы не работает, потому что pandas не распознает индексы как столбцы, и если я использую что-то вроде

df.groupby(level=0).sum()

, кажется, я могу выбрать только один уровень. Как бы go об этом?

1 Ответ

1 голос
/ 09 января 2020

Вы можете указать несколько уровней, например:

df.groupby(level=[0, 1]).sum()
#alternative
df.groupby(level=['A','B']).sum()

Или передать уровень параметра в sum:

df.sum(level=[0, 1])
#alternative
df.sum(level=['A','B'])

Sample :

df = pd.DataFrame({'A':[1,1,2,2,3],
                   'B':[3] * 5,
                   'C':[3,4,5,4,5],
                   'Quantity':[1.0,3,4,5,6]}).set_index(['A','B','C'])
print (df)
       Quantity
A B C          
1 3 3       1.0
    4       3.0
2 3 5       4.0
    4       5.0
3 3 5       6.0

df1 = df.groupby(level=[0, 1]).sum()
print (df1)
     Quantity
A B          
1 3       4.0
2 3       9.0
3 3       6.0

df1 = df.groupby(level=['A','B']).sum()
print (df1)
     Quantity
A B          
1 3       4.0
2 3       9.0
3 3       6.0

df1 = df.sum(level=[0, 1])
print (df1)
     Quantity
A B          
1 3       4.0
2 3       9.0
3 3       6.0

df1 = df.sum(level=['A','B'])
print (df1)
     Quantity
A B          
1 3       4.0
2 3       9.0
3 3       6.0
...