You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中为员工-经理数据集新增下属计数列的问题求助

统计每位经理的下属数量解决方案

问题说明

需要给员工汇报关系数据集新增一列,统计每位经理的下属数量。

现有数据集

ID    ManagerID 
 101      105
 102      103
 103      105
 104      103 
 105      110

期望输出

ID      ManagerID      Count 
101       105             0
102       103             0
103       105             2
104       103             0
105       110             2

错误代码尝试

df['count'] = df.groupby(['ID'])['ManagerID'].transform('nunique')

解决方案

错误原因

这段代码逻辑完全偏离需求:按ID分组统计ManagerID的唯一值数量,实际是在算每个员工有多少个不同的经理,而不是每个经理有多少下属。

正确实现方式

我们需要统计每个ManagerID对应的下属人数(即有多少员工的ManagerID等于该员工的ID),再映射回原数据集中对应经理的行。

方法一:使用merge

# 统计每个经理的下属数量,整理成ID和Count的对应表
manager_subcount = df['ManagerID'].value_counts().reset_index()
manager_subcount.columns = ['ID', 'Count']

# 将统计结果合并到原数据集,非经理的员工Count补0
df = df.merge(manager_subcount, on='ID', how='left').fillna(0)
# 转换为整数类型(可选)
df['Count'] = df['Count'].astype(int)

方法二:使用map(更简洁)

# 生成{经理ID:下属数}的字典
subcount_map = df['ManagerID'].value_counts().to_dict()
# 用员工ID匹配字典,不存在的键返回0
df['Count'] = df['ID'].map(subcount_map).fillna(0).astype(int)

结果验证

执行上述任意代码后,得到的结果与期望输出完全一致。


内容的提问来源于stack exchange,提问作者Coding_Nubie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 08:22:53