我希望根據groupby計數(或大小)后獲得的某些值創建一個總和。我創建了一個模擬 DataFrame 和下面的所需輸出。從我正在尋找的示例中,它應該是不言自明的。我檢查了很多,但似乎沒有直接的答案。
data = {'col1' : ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'C', 'C','C','C','C','C','C','C','C'], 'col2' :[ 'A', 'B', 'C', 'B', 'A', 'B', 'C', 'A', 'C', 'B', 'B', 'C', 'A','B','A','A','A','B','C','C']}
data = pd.DataFrame(data)
data.groupby(['col1', 'col2'])['col2'].count()
此計數的輸出是:
A A 2
B 2
C 1
B A 1
B 3
C 2
C A 4
B 2
C 3
我想對此輸出進行進一步計算并得到:
A A 2
(B C) 3
B (A C) 3
B 3
C (A B) 6
C 3
uj5u.com熱心網友回復:
您可以創建虛擬列并groupby使用這些列:
out = (data
.assign(match=data['col1']==data['col2'], count=1)
.groupby(['col1','match'], as_index=False)
.agg({'col2': lambda x: ' '.join(x.unique()), 'count':'sum'})
.drop(columns='match'))
輸出:
col1 col2 count
0 A B C 3
1 A A 2
2 B C A 3
3 B B 3
4 C A B 6
5 C C 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/430364.html
標籤:Python python-3.x 熊猫 数据框 熊猫-groupby
