有 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
我正在寻找的是显示数据框中每个水果的小计。谢谢!
您可以混合使用 unstack
、assign
和 stack
来执行此操作:
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.sum
或 df.groupby.sum
与 level=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
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
我正在寻找的是显示数据框中每个水果的小计。谢谢!
您可以混合使用 unstack
、assign
和 stack
来执行此操作:
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.sum
或 df.groupby.sum
与 level=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