Pandas计算每个类别的计数和和组

2024-04-25 02:31:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧:

    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

我想通过标记(作为列)计算每个类别组的计数数,例如:

^{pr2}$

另一种方法是通过标记(作为列)计算每个类别组的数量之和,如:

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()

但效率低下


Tags: the数据方法标记df数量类别计数
2条回答

使用agg。在

idx_cols = ['category', 'mark']
agg_dict = {'num1': {'Sum': 'sum'}, 'num2': {'Count': 'count'}}

df.set_index(idx_cols).groupby(level=[0, 1]).agg(agg_dict).unstack()

enter image description here

>>> 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

相关问题 更多 >