代码之家  ›  专栏  ›  技术社区  ›  Leyla Elkhamlichi

按特定值计数和分组

  •  1
  • Leyla Elkhamlichi  · 技术社区  · 1 年前

    我有一个数据帧,我想计算一行中出现的特定值。 下面的代码给出了正确的答案,现在我想在我的数据帧中添加一个新的列

    occur = df.groupby(['Code_5elaag','Essentieel_Optioneel']).size()
    occur
    
    **Code_5elaag  Essentieel_Optioneel**
    1101         essentieel               8
                 optioneel                8
    1102         essentieel               8
                 optioneel               51
    1103         essentieel               8
                                         ..
    96231        optioneel                6
    96232        essentieel               1
                 optioneel                2
    96290        essentieel               9
                 optioneel               17
    

    当我为框架分配一个新的列时,输出如下:

    uniq['ess'] = df.groupby(['Code_5elaag'])['Essentieel_Optioneel'].transform(np.size)
    
        Code_5elaag Omschrijving_5elaag Soort_Skill Aantal_skills   ess
    0   1101    Officieren landmacht    taken   16  16              15
    16  1102    Officieren luchtmacht   taken   59  59              59
    75  1103    Officieren marechaussee taken   16  16              16
    
    

    但这不是我想要的,我想把 Aantal_skills 多少钱 本质与选择 第一行应该是fo 8要素 8可选

    1 回复  |  直到 1 年前
        1
  •  0
  •   jezrael    1 年前

    您很接近,需要按两列分组:

    df['ess'] = df.groupby(['Code_5elaag','Essentieel_Optioneel'])['Essentieel_Optioneel'].transform('size')
    

    如果需要2个新列,请使用 crosstab 具有 DataFrame.join :

    out = df.join(pd.crosstab(df['Code_5elaag'], df['Essentieel_Optioneel']), on='Code_5elaag')