2013-11-24 20 views
15

In einem Pandas DataFrame, ist es möglich, Spalten mit identischen Werten zu reduzieren und die Werte in einer anderen Spalte zusammenzufassen?Summe der Spaltenwerte in 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 

Ausgabe

 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 dem obigen Beispiel sind die ersten beiden Reihen haben die gleiche score und type, so dass diese Zeilen zusammengeführt werden sollten, und ihre Noten aufaddiert.

gewünschte Ausgabe

 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 

Antwort

23

Dies ist ein Job für 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