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

如何用Python实现嵌套Vlookup逻辑完成DataFrame关联更新

用Pandas实现嵌套Vlookup逻辑更新DataFrame

核心思路

先从DataFrame02构建部门编号到员工编码的映射字典,再直接用这个字典对DataFrame01的目标列做批量匹配,替代Excel里的嵌套Vlookup操作,效率更高且流程简洁。

代码实现

以下是适配需求的完整代码(可根据实际列名调整):

import pandas as pd

# 模拟DataFrame01(需要更新的原始表)
df1 = pd.DataFrame({
    "员工姓名": ["张三", "李四", "王五"],
    "Unit Manager's Dp No": ["DP001", "DP002", "DP001"],
    "Sales Manager's Dp No": ["DP003", "DP001", "DP002"]
})

# 模拟DataFrame02(用于匹配的对照表)
df2 = pd.DataFrame({
    "Employee Code": ["EMP001", "EMP002", "EMP003"],
    "Unit Manager's Dp No": ["DP001", "DP002", "DP003"]
})

# 步骤1:从df2生成「部门编号→员工编码」的映射字典
dp_to_emp_map = df2.set_index("Unit Manager's Dp No")["Employee Code"].to_dict()

# 步骤2:批量更新df1的目标列
df1["UNIT MANAGER'S EMP_ID"] = df1["Unit Manager's Dp No"].map(dp_to_emp_map)
df1["Sales Manager's EMP_ID"] = df1["Sales Manager's Dp No"].map(dp_to_emp_map)

# 查看最终结果
print(df1)

关键步骤说明

  • set_index("Unit Manager's Dp No")["Employee Code"].to_dict():将df2的部门编号设为索引,提取员工编码列转换成字典,一步完成嵌套Vlookup的两次匹配逻辑。
  • .map(dp_to_emp_map):批量匹配替换,大数据量下比Excel公式快数倍;若存在匹配失败的部门编号,结果会显示NaN,可通过.fillna("无匹配")自定义填充值。

运行结果示例

员工姓名 Unit Manager's Dp No Sales Manager's Dp No UNIT MANAGER'S EMP_ID Sales Manager's EMP_ID
0   张三                DP001                DP003                 EMP001                 EMP003
1   李四                DP002                DP001                 EMP002                 EMP001
2   王五                DP001                DP002                 EMP001                 EMP002

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 16:06:28