在Pandas DataFrame中汇总列值

Nyx*_*nyx 16 python python-2.7 pandas

在pandas DataFrame中,是否可以折叠具有相同值的列,并总结另一列中的值?

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
Run Code Online (Sandbox Code Playgroud)

产量

     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
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,前两行具有相同的scoretype,因此这些行应该被合并到一起和它们的分数相加.

期望的输出

     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
Run Code Online (Sandbox Code Playgroud)

DSM*_*DSM 27

这是一份工作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
Run Code Online (Sandbox Code Playgroud)