17

In a pandas DataFrame, is it possible to collapse columns which have identical values, and sum up the values in another column?

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.

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

1 Answer 1

28

This is a job for 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
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.