[英]Pandas groupby and then pivot is not returning the desired output
我有一個數據框df
如下:
CA Amount Payment_Mode Trans
1001 230 Non-Digi Normal
1001 330 Website Normal
1001 40 Website PPI
1002 100 Card PPI
1002 700 Website PPI
1002 100 Card Normal
現在,我希望有一個結果數據幀df_f
如下,其中Payment_Mode
計數和Trans
計數方向列被捕獲:
CA Amount Non-Digi Website Card Normal PPI
1001 600 1 2 0 2 1
1002 900 0 1 2 1 2
我的方法:
df_1 = df.groupby(['CA']).agg(Amount = ('Amount','sum'),
Payment_Mode = ('Payment_Mode','count'),
Trans = ('Trans','count')).reset_index()
df_f = df_1.pivot(index='CA', columns = 'Payment_Mode', values = '???') <-- This is where I am stuck
這有什么線索嗎?
使用DataFrame.melt
與DataFrame.pivot_table
第一,然后添加聚集和科拉姆:
df_1 = (df.groupby('CA').sum()
.join(df.melt(id_vars='CA',value_vars=['Payment_Mode','Trans'])
.pivot_table(index='CA', columns='value', values = 'variable',aggfunc='count', fill_value=0))
.reset_index())
print (df_1)
CA Amount Card Non-Digi Normal PPI Website
0 1001 600 0 1 2 1 2
1 1002 900 2 0 1 2 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.