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

多列匹配合并两个DataFrame数据 替代Excel Vlookup实现高效查询

实现方案

推荐优先使用map字典映射方案,运算效率远高于多次pd.merge,完美适配大表场景:

步骤1:读取数据

import pandas as pd

# 读取两个Excel表数据,可根据实际情况调整sheet_name等参数
df1 = pd.read_excel("表1.xlsx")
df2 = pd.read_excel("表2.xlsx")

步骤2:构建ID-规模映射字典

将表2的主键和对应值转换为字典,单次遍历即可完成,后续查找效率为O(1):

id_size_map = df2.set_index("Company ID")["Company Size"].to_dict()

步骤3:为表1三列分别匹配规模

直接调用Series的map方法,和Vlookup的匹配逻辑完全一致,匹配不到的ID会返回NaN:

df1["Target Size"] = df1["Target Company ID"].map(id_size_map)
df1["Sub Size"] = df1["Subsidiary ID"].map(id_size_map)
df1["Parent Size"] = df1["Parent Company ID"].map(id_size_map)

步骤4:调整列顺序得到最终结果

result_df = df1[["Target Company ID", "Target Size", "Subsidiary ID", "Sub Size", "Parent Company ID", "Parent Size"]]

可选merge实现方案(仅推荐小数据量场景使用)

如果坚持用merge实现,可通过三次左连接+重命名列完成:

# 匹配目标公司规模
temp = df1.merge(df2, left_on="Target Company ID", right_on="Company ID", how="left")\
          .rename(columns={"Company Size": "Target Size"})\
          .drop(columns="Company ID")
# 匹配子公司规模
temp = temp.merge(df2, left_on="Subsidiary ID", right_on="Company ID", how="left")\
           .rename(columns={"Company Size": "Sub Size"})\
           .drop(columns="Company ID")
# 匹配母公司规模
result_df = temp.merge(df2, left_on="Parent Company ID", right_on="Company ID", how="left")\
                .rename(columns={"Company Size": "Parent Size"})\
                .drop(columns="Company ID")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:06:03