如何用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
相关产品推荐
相关产品推荐

