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
相关产品推荐
相关产品推荐

