我有一个数据框:
category num1 num2 mark
1 A 2 2 0
2 B 3 3 1
3 C 4 2 2
4 C 3 5 2
5 D 6 8 0
6 E 7 5 1
7 D 8 1 1
我想按标记(作为列)计算每个类别组的计数,例如:
the counts:
catgory mark_0 mark_1 mark_2
A 1 0 0
B 0 1 0
C 0 0 2
D 0 2 0
E 0 1 0
另一个是通过标记(作为列)计算每个类别组的数量之和,如:
the sum:
category numsum_0 numsum_1 numsum_2
A 2 0 0
B 0 3 0
C 0 0 7
D 0 14 0
E 0 7 0
我的方法是:
df_z[df_z['mark']==0]['category'].value_counts()
df_z[df_z['mark']==0].groupby(['category'], sort=False).sum()
但效率低下
答案 0 :(得分:3)
>>> pd.pivot_table(df,index=['category'],columns=['mark'],aggfunc=len).fillna(0)
num
mark 0 1 2
category
A 1.0 0.0 0.0
B 0.0 1.0 0.0
C 0.0 0.0 2.0
D 1.0 1.0 0.0
E 0.0 1.0 0.0
>>> pd.pivot_table(df,index=['category'],columns=['mark'],aggfunc=np.sum).fillna(0)
num
mark 0 1 2
category
A 2.0 0.0 0.0
B 0.0 3.0 0.0
C 0.0 0.0 7.0
D 6.0 8.0 0.0
E 0.0 7.0 0.0
答案 1 :(得分:2)