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

Python中统计每位经理的下属员工ID数量问题求助

问题分析与解决建议

问题根源

原代码的核心错误是:你用员工ID(df['ID'])去映射以经理ID为索引的统计结果,两者完全不匹配,导致所有映射结果都是NaN,最终fillna后全部变成0。

正确实现思路

要统计每位经理的下属员工数,需要:

  • 按经理ID分组,统计每组内唯一员工ID的数量(同一个员工有多条记录时,仅算1个下属)
  • 生成符合格式要求的统计表格,或按需将统计结果合并回原数据集

解决方案代码

方法一:直接生成目标统计表格

这是最直接满足你期望输出的方式:

# 按Manager ID分组,统计每组内唯一员工ID的数量
manager_reports = df.groupby('Manager ID')['ID'].nunique().reset_index()
# 重命名列名匹配期望输出
manager_reports.columns = ['Manager ID', 'Reports']
# 输出结果
print(manager_reports)

方法二:将下属数合并回原DataFrame

如果需要在原数据的每条记录中标注对应经理的下属总数,要用经理ID去映射统计结果:

# 先统计每个经理的下属数
counts = df.groupby('Manager ID')['ID'].nunique()
# 用Manager ID列映射统计值,而非员工ID
df['Reports'] = df['Manager ID'].map(counts).fillna(0, downcast='infer')

验证结果

运行方法一的代码后,会得到与你期望完全一致的输出:

Manager ID  Reports
0           4        1
1           5        2

内容的提问来源于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 23:42:01