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

Python按ID批量标记员工岗位与部门异动状态

解决按ID批量标记岗位部门同时异动的问题

原代码问题修正

你的原代码存在几处语法错误,先修正基础判断逻辑:

  • 列索引错误:['Adjusted_Code'] 和 ['Adjusted Department'] 需改为 df['Adjusted_Code'] 和 df['Adjusted Department']
  • 运算优先级问题:& 的优先级高于 !=,必须给每个比较条件单独加括号

修正后的单条记录判断代码:

import numpy as np
import pandas as pd

# 先标记单条记录是否满足同时换岗换部门的条件
df['is_transition'] = np.where(
    (df['Job_Code'] != df['Adjusted_Code']) & (df['Department'] != df['Adjusted Department']),
    'Yes',
    'No'
)

实现按ID批量标记需求

要达成只要ID存在至少一次符合条件的异动,该ID所有行的Transition都设为Yes的目标,用groupby+transform可以高效实现:

方法一:一步生成最终结果

无需临时列,直接按ID分组判断:

df['Transition'] = df.groupby('ID').transform(
    lambda group: 'Yes' if ((group['Job_Code'] != group['Adjusted_Code']) & (group['Department'] != group['Adjusted Department'])).any() else 'No'
)

方法二:基于临时列批量更新

如果已经生成了is_transition临时列,可简化为:

# 利用"Yes"字符串排序优先级高于"No"的特性,取每组最大值
df['Transition'] = df.groupby('ID')['is_transition'].transform('max')

# 或者用any()明确判断
df['Transition'] = df.groupby('ID')['is_transition'].transform(lambda x: 'Yes' if (x == 'Yes').any() else 'No')

最终输出示例

用你的测试数据运行后,结果会变为:

ID  Job_Code  Adjusted_Code   Job_Title  Adjusted_Job  Department Adjusted_Department Transition 
1    327          362         Associate    Manager       Sales         Sales             No
1    327          362         Associate    Manager       Sales         Sales             No
1    362          362         Associate    Manager       Sales         Sales             No
2    358          455         Consult      Advisor       HR            Finance           Yes
2    455          455         Advisor      Advisor       Finance       Finance           Yes
2    455          455         Advisor      Advisor       Finance       Finance           Yes            
3    215          381         Manager      Director      Tech          Sales             Yes
3    215          381         Manager      Director      Tech          Sales             Yes
3    215          381         Manager      Director      Tech          Sales             Yes
3    381          381         Manager      Director      Sales         Sales             Yes

内容的提问来源于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.27 14:22:35