2013-11-24 138 views
15

在pandas DataFrame中,是否可以摺疊具有相同值的列,然後總結另一列中的值?在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 

輸出

 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 

在上面的例子中,前兩行具有相同的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 

回答

23

這是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