簡體   English   中英

熊貓按每個類別計算計數和總和組

[英]pandas calculate the counts and sum group by each category

我有一個數據框:

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

但是效率低下

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

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

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM