亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何按級別的計數聚合數據,將每個級別的計數設置為自己的列?

如何按級別的計數聚合數據,將每個級別的計數設置為自己的列?

楊__羊羊 2022-05-24 16:41:37
我的數據在事件方面具有行粒度,我想按客戶 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


查看完整回答
反對 回復 2022-05-24
  • 1 回答
  • 0 關注
  • 186 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號