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

Python中基于Manager_ID创建Employee_Count计数列的问题

问题描述

我正在处理包含Employee_ID和Manager_ID的数据集,希望添加Employee_Count列,该列值为对应Manager_ID管理的员工总数。

输入数据集:

Employee_ID     Manager_ID 
     1              5
     2              5
     3              5
     4              7
     5              7
     6              7
     7              14
     8              9
     9              7 
    10              9
    11              12 

期望输出:

Employee_ID       Manager_ID       Employee_Count
       1                5                   3
       2                5                   3
       3                5                   3
       4                7                   4
       5                7                   4
       6                7                   4
       7                14                  1
       8                9                   2
       9                7                   4
       10               9                   2
       11               12                  1

当前使用的代码:

count = 0 
reports = []
for i, column in df.iterrows():
    if column['Employee_ID'] == column['Manager_ID']:
         count += 1
         reports.append(count) 
    else:
         reports.append(0)
df['Employee_Count'] = reports

运行后结果全为0,推测是逐行判断逻辑错误,寻求正确实现方法。

*已更新表格为更准确样式,对此变更深表歉意。


解决方案

你的代码逻辑错误在于,你判断的是当前行的员工ID和经理ID是否相等,这和统计经理管理的员工总数完全无关——你的数据里没有员工自己当自己经理的情况,所以结果全为0。

正确思路是:先统计每个Manager_ID在Manager_ID列中出现的次数(该次数就是对应经理管理的员工数),再将这个次数匹配回原表的每一行。

方法一:value_counts + map(最简洁高效)

# 统计每个Manager_ID对应的员工数量
manager_counts = df['Manager_ID'].value_counts()
# 将统计结果映射到原表,生成目标列
df['Employee_Count'] = df['Manager_ID'].map(manager_counts)

方法二:groupby + transform(扩展性更强)

如果后续需要基于分组做更多计算,这种方法更灵活:

# 按Manager_ID分组,统计每组行数,再将结果广播到原表所有行
df['Employee_Count'] = df.groupby('Manager_ID')['Manager_ID'].transform('count')

这两种方法都能得到预期结果,且比iterrows循环效率高很多(Pandas内置操作的性能远优于逐行循环)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:16:04