2013-11-24 44 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 

、最初の2行は同じ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 
関連する問題