DataFrame分组统计特定值并新增列:拆分Essentieel与Optioneel计数
解决方法
你现在的问题是用transform(np.size)只能拿到每个Code_5elaag的总行数,没法拆分出essentieel和optioneel各自的计数。可以按以下步骤实现需求:
将分组统计结果转为宽表
把你已经得到的occur(分组后的Series)通过unstack()转成DataFrame,让essentieel和optioneel成为单独的列,缺失的类别用fillna(0)补0(避免部分Code_5elaag只有其中一种类别导致缺值):# 转换分组结果为宽表格式 occur_wide = occur.unstack(fill_value=0) # 给列重命名,让含义更清晰 occur_wide = occur_wide.rename(columns={'essentieel': 'essentieel_count', 'optioneel': 'optioneel_count'})合并到目标DataFrame
把转换后的宽表和你的uniqDataFrame按Code_5elaag字段合并:uniq = uniq.merge(occur_wide, on='Code_5elaag', how='left')
处理后,uniq会新增两列,分别对应每个Code_5elaag下essentieel和optioneel的计数,比如第一行1101对应的essentieel_count是8,optioneel_count是8,完全符合你的需求。
示例结果
最终的uniq数据会呈现为:
| Code_5elaag | Omschrijving_5elaag | Soort_Skill | Aantal_skills | essentieel_count | optioneel_count |
|---|---|---|---|---|---|
| 1101 | Officieren landmacht | taken | 16 | 8 | 8 |
| 1102 | Officieren luchtmacht | taken | 59 | 8 | 51 |
| 1103 | Officieren marechaussee | taken | 16 | 8 | 8 |
内容的提问来源于stack exchange,提问作者Leyla Elkhamlichi
相关产品推荐
相关产品推荐

