我有一個包含三列的資料框:
- 顏色
- 人
- 佩戴次數
有三種顏色,多個名稱,數字列指示特定名稱具有特定顏色的次數。問題是,對于我嘗試分組的同一個人,相同的顏色多次出現,它總結了每個名稱每種顏色的總數。知道如何執行以這種方式聚合的 groupby 嗎?對不起,如果這太模糊了!
為清楚起見,我附上了示例資料的影像。
關于如何按顏色整齊聚合的任何幫助都會很棒!
Colour Person Number of times worn
0 Red Tom 1
1 Red Tom 2
2 Red Tom 5
3 Blue Tom 7
4 Blue Tom 8
5 Green Tom 9
6 Red John 9
7 Red John 6
8 Green John 0
9 Green John 0
10 Orange John 5
11 Red John 4
12 Red Stanley 2
13 Orange Stanley 4
14 Green Stanley 5
15 Green Stanley 0
16 Green Stanley 6
17 Green Stanley 7
謝謝
uj5u.com熱心網友回復:
你也可以這樣寫
df.groupby(["Person", "Color"])["n"].sum().reset_index(drop=True)
或者這也很有魅力
df.groupby(["Person", "Color"]).agg({"n": "sum"}).reset_index(drop=True)
僅reset_index(drop=True)在您計劃修改原始資料幀時使用,否則不要傳遞drop=True并將其存盤為變數。
uj5u.com熱心網友回復:
您可以像這樣同時對多個列進行分組。
df = pd.DataFrame({
'Colour' : ['red', 'red', 'red', 'red', 'blue','blue',],
'Person' : ['Tom', 'Tom', 'Tom', 'John', 'John', 'John'],
'n' : [1,2,4,5,6,7]
})
df.groupby(['Person','Colour']).sum().reset_index()
輸出:
Person Colour n
0 John blue 13
1 John red 5
2 Tom red 7
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/350796.html
