有 2 个按列分组,如何按每个按列分组进行小计?

With 2 group by columns, how can I do a subtotal by each of the group by columns?

pandas 的新手。我正在尝试按列在 2 组内进行小计。我已经设法弄清楚如何使用 2 组按属性求和,但在其中,我还尝试进行小计。请看下面的例子-

df.groupby(['Fruit','Name'])['Number'].sum()

输出

Fruit   Name      Number   
Apples  Bob        16
        Mike        9
        Steve      10
                 ------
                   35
                 ------
Grapes  Bob        35
        Tom        87
        Tony       15
                 ------
                   137
                 ------
Oranges Bob        67
        Mike       57
        Tom        15
        Tony        1

我正在寻找的是显示数据框中每个水果的小计。谢谢!

您可以混合使用 unstackassignstack 来执行此操作:

sums = df.groupby(['Fruit', 'Name'])['Number'].sum().unstack().assign(Total=df.groupby('Fruit').sum()).stack()

输出:

>>> sums
Fruit    Name 
Apples   Bob       16.0
         Mike       9.0
         Steve     10.0
         Total     35.0
Grapes   Bob       35.0
         Tom       87.0
         Tony      15.0
         Total    137.0
Oranges  Bob       67.0
         Mike      57.0
         Tom       15.0
         Tony       1.0
         Total    140.0
dtype: float64

IIUC,您可以使用 df.sumdf.groupby.sumlevel=0:

df.sum(level=0) # Will be deprecated
# or
df.groupby(level=0).sum()

输出:

Fruit
Apples      35
Grapes     137
Oranges    140
Name: Number, dtype: int64