- 此问题在此处已有答案**:
How do I create a new column from the output of pandas groupby().sum()?(4个答案)
6天前关闭。
下面是我的数据框的简化版本(数据框中的人数远远超过3):
df = pd.DataFrame({'Person':['John','David','Mary','John','David','Mary'],
'Sales':[10,15,20,11,12,18],
})
Person Sales
0 John 10
1 David 15
2 Mary 20
3 John 11
4 David 12
5 Mary 18
我想在此数据框中添加一列"Total",这是人均总销售额的总和
Person Sales Total
0 John 10 21
1 David 15 27
2 Mary 20 38
3 John 11 21
4 David 12 27
5 Mary 18 38
实现这一目标最简单的方法是什么?
我试过了
df.groupby('Person').sum()
但是输出的形状与df
的形状不一致。
Sales
Person
David 27
John 21
Mary 38
3条答案
按热度按时间ssm49v7z1#
我们需要的是
transform
方法,它可以对每个组应用一个函数:它给出了预期结果:
irtuqstp2#
实现这一点最简单的方法是使用pandas groupby和sum函数。
这将在数据框中添加一列,其中包含每人的总销售额。
ni65a41a3#
数据框中的“人员”列包含重复值
不可能通过groupby将新列应用于此
我建议根据销售额制作一个新的数据框
下面的代码将帮助您实现这一点
这将创建一个新的数据框,列为“Person”和“sales”。