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

Python中按条件修改行:给代班经理名称添加(Sub)

问题分析与解决建议

你的代码报错原因

  1. 语法错误:
    • 字符串索引引号不匹配:df['Manager_pos] 缺少闭合单引号,应改为 df['Manager_pos'];df['Manager Name') 错误使用右括号,应改为 df['Manager Name']
    • 括号逻辑错误:& 两侧的条件括号包裹不完整,导致运算优先级混乱
  2. 逻辑错误:
    • head(1) 和 tail(1) 是针对整个数据集取首尾行,并非按 Emp_ID 分组判断每个员工的主经理,无法正确识别代班场景
  3. 格式错误:
    • 你需要添加的是 (Sub) 后缀,而非直接拼接 Sub

正确实现方案

根据你的期望输出,逻辑应为:按 Emp_ID 分组,每个员工的第一个出现的经理为正式经理,其余经理为代班经理,添加 (Sub) 后缀。以下是可运行代码:

import pandas as pd
import numpy as np

# 构造示例数据集(替换为你的真实数据)
data = {
    'Emp_ID': [1,1,1,2,2,2],
    'Job_Title': ['Sales','Sales','Sales','Tech','Tech','Tech'],
    'Manager_Pos': [627,627,627,324,324,324],
    'Manager Name': ['John Doe','John Doe','David Stern','Mark Smith','Henry Ford','Henry Ford'],
    'MGR_ID': [12,12,4,7,13,13]
}
df = pd.DataFrame(data)

# 按Emp_ID分组,获取每个员工的第一个经理作为正式经理
main_managers = df.groupby('Emp_ID')['Manager Name'].first().reset_index(name='Main_Manager')

# 合并正式经理信息到原数据集
df = df.merge(main_managers, on='Emp_ID')

# 给代班经理添加(Sub)后缀
df['Manager Name'] = np.where(
    df['Manager Name'] != df['Main_Manager'],
    df['Manager Name'] + '(Sub)',
    df['Manager Name']
)

# 删除辅助列(可选)
df = df.drop('Main_Manager', axis=1)

# 输出结果
print(df.to_string(index=False))

输出结果

Emp_ID Job_Title  Manager_Pos    Manager Name  MGR_ID
     1      Sales          627        John Doe      12
     1      Sales          627        John Doe      12
     1      Sales          627  David Stern(Sub)       4
     2       Tech          324       Mark Smith       7
     2       Tech          324   Henry Ford(Sub)      13
     2       Tech          324   Henry Ford(Sub)      13

如果你的实际逻辑是取每个员工出现次数最多的经理作为正式经理,可以将获取主经理的代码替换为:

def get_main_manager(group):
    return group['Manager Name'].value_counts().idxmax()

main_managers = df.groupby('Emp_ID').apply(get_main_manager).reset_index(name='Main_Manager')

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