我的數據在事件方面具有行粒度,我想按客戶 ID 聚合它們。數據采用 pandas df 的形式,如下所示:| Event ID | Cust ID | P1 | P2 | P3 | P4 |------------------------------------------| 1 | 1 | 12 | 0 | 0 | 0 |--------------------------| 2 | 1 | 12 | 0 | 0 | 0 |--------------------------| 3 | 1 | 10 | 12 | 0 | 0 |--------------------------- | 4 | 2 | 206 | 0 | 0 | 0 |--------------------------- | 5 | 2 | 206 | 25 | 0 | 0 |----------------------------P1 到 P4 的數字只是級別,它們是我需要計算的事件類別(有 175 多個代碼),其中每個事件類別都有自己的列。我想要的輸出,理想情況下看起來像:| Cust ID | Count(12) | Count(10) | Count(25) | Count(206) |------------------------------------------------------------ | 1 | 3 | 1 | 0 | 0 |--------------------- | 2 | 0 | 0 | 1 | 2 |---------------------我面臨的挑戰是跨多個列進行計數。P1 中有 2 個“12”,P2 中有 1 個“12”。我嘗試使用 groupby 并合并。但是我要么錯誤地使用了它們,要么使用了錯誤的函數,因為我在結果表中得到了很多“NaN”。
1 回答
jeck貓
TA貢獻1909條經驗 獲得超7個贊
您可以使用以下方法:
df = pd.DataFrame({'Event ID':[1,2,3,4,5],
'Cust ID':[1]*3+[2]*2,
'P1':[12,12,10,206,25],
'P2':[0,0,12,0,0],
'P3':[0]*5,
'P4':[0]*5})
df.melt(['Event ID','Cust ID'])\
.groupby('Cust ID')['value'].value_counts()\
.unstack().add_prefix('Count_')\
.reset_index()
輸出:
value Cust ID Count_0 Count_10 Count_12 Count_25 Count_206
0 1 8.0 1.0 3.0 NaN NaN
1 2 6.0 NaN NaN 1.0 1.0
添加回答
舉報
0/150
提交
取消
