Python 总结 Pandas DataFrame 中的列值
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/20181456/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Sum up column values in Pandas DataFrame
提问by Nyxynyx
In a pandas DataFrame, is it possible to collapse columns which have identical values, and sum up the values in another column?
在 Pandas DataFrame 中,是否可以折叠具有相同值的列,并对另一列中的值求和?
Code
代码
data = {"score":{"0":9.397,"1":9.397,"2":9.397995,"3":9.397996,"4":9.3999},"type":{"0":"advanced","1":"advanced","2":"advanced","3":"newbie","4":"expert"},"count":{"0":394.18930604,"1":143.14226729,"2":9.64172783,"3":0.1,"4":19.65413734}}
df = pd.DataFrame(data)
df
Output
输出
count score type
0 394.189306 9.397000 advanced
1 143.142267 9.397000 advanced
2 9.641728 9.397995 advanced
3 0.100000 9.397996 newbie
4 19.654137 9.399900 expert
In the example above, the first two rows have the same scoreand type, so these rows should be merged together and their scores added up.
在上面的示例中,前两行具有相同的score和type,因此应将这些行合并在一起并将它们的分数相加。
Desired Output
期望输出
count score type
0 537.331573 9.397000 advanced
1 9.641728 9.397995 advanced
2 0.100000 9.397996 newbie
3 19.654137 9.399900 expert
采纳答案by DSM
This is a job for groupby:
这是一份工作groupby:
>>> df.groupby(["score", "type"]).sum()
count
score type
9.397000 advanced 537.331573
9.397995 advanced 9.641728
9.397996 newbie 0.100000
9.399900 expert 19.6541374
>>> df.groupby(["score", "type"], as_index=False).sum()
score type count
0 9.397000 advanced 537.331573
1 9.397995 advanced 9.641728
2 9.397996 newbie 0.100000
3 9.399900 expert 19.654137

