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

如何修正Pandas代码:为代任空缺经理的记录统一添加(Vacant)

修正Pandas雇佣历史数据集临时代理经理标记方案

原代码问题分析

  1. 语法错误:groupby('ID','Reporting_Manager_ID'])参数格式错误,应为列表形式;且列名实际是Emp_ID而非ID。
  2. 拼写错误:ne(['Manger_Name'])中Manger_Name少写一个字母a,正确应为Manager_Name。
  3. 逻辑偏差:原代码通过组内第一个经理名与当前名对比来标记,无法精准识别"特定经理代任其他职位"的场景,导致部分目标记录未被标记(如示例中Emp_ID=3的第三条John Wick记录)。

针对性解决方案(仅处理John Wick场景)

根据需求,我们只需标记John Wick在非原始经理ID(4012)下的所有记录,直接通过精准条件筛选即可:

# 定义目标经理及其原始ID
target_manager = "John Wick"
original_id = 4012

# 生成筛选掩码:经理名为John Wick,且对应经理ID不是原始ID
mask = (df['Manager_Name'] == target_manager) & (df['Reporting_Manager_ID'] != original_id)

# 给符合条件的记录添加标记
df.loc[mask, 'Manager_Name'] += ' (Vacant)'

运行上述代码后,将得到你期望的输出:所有John Wick在2812、9236、1293等非4012 ID下的记录都会被标记(Vacant),而4012 ID下的记录保持原样。

通用解决方案(支持批量处理多个经理)

如果数据集中有多个经理存在代任情况,可先建立「经理名-原始ID」的映射字典,批量处理所有符合条件的记录:

# 构建经理与原始ID的映射表
manager_original_map = {
    "John Wick": 4012,
    "Sarah Smith": 2812,
    # 可继续添加其他经理的映射关系
}

# 生成掩码:当前记录的经理ID不等于该经理的原始ID
mask = df.apply(
    lambda row: row['Reporting_Manager_ID'] != manager_original_map.get(row['Manager_Name'], row['Reporting_Manager_ID']),
    axis=1
)

# 批量添加标记
df.loc[mask, 'Manager_Name'] += ' (Vacant)'

此方案可适配300+个经理ID的场景,无需逐个编写条件。

内容的提问来源于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.26 05:07:31