简体   繁体   English

在Pandas DataFrame中汇总列值

[英]Sum up column values in Pandas DataFrame

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 score and type , so these rows should be merged together and their scores added up. 在上面的示例中,前两行具有相同的scoretype ,因此这些行应该合并在一起并且它们的分数相加。

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM