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

Python实现多表按条件匹配取值合并为单表的方法

Python实现方案

用pandas库处理这类表格匹配合并任务效率最高,不需要写复杂的逐行判断逻辑,适合初学者快速实现需求。

前置准备

先安装pandas依赖,在终端执行命令:
pip install pandas

完整实现代码

整体分三步实现:

  1. 导入库并加载/构造3张源表
  2. 合并分类型的分段表为统一映射表
  3. 以TABLE1为主表关联匹配SEGMENT字段,输出最终结果
import pandas as pd

# ----------------------
# 1. 读取/构造3张源表
# ----------------------
# TABLE1 产品主表
df_product = pd.DataFrame({
    'Name of Product': ['Iphone X', 'HP', 'Galaxy S20', 'MAC Pro'],
    'QTY': [9, 7, 8, 6],
    'TYPE': ['Smartphone', 'LAPTOP', 'Smartphone', 'LAPTOP']
})

# TABLE2 笔记本品牌分段表
df_laptop_seg = pd.DataFrame({
    'BRANDS': ['HP', 'MAC Pro'],
    'SEGMENT': ['GOLD', 'PREMIUM']
})

# TABLE3 智能手机品牌分段表
df_phone_seg = pd.DataFrame({
    'BRANDS': ['Iphone X', 'Galaxy S20'],
    'SEGMENT': ['PREMIUM', 'GOLD']
})

# ----------------------
# 2. 生成分段统一映射表
# ----------------------
segment_mapping = pd.concat([df_laptop_seg, df_phone_seg], ignore_index=True)

# ----------------------
# 3. 关联匹配得到结果
# ----------------------
df_result = df_product.merge(
    segment_mapping,
    left_on='Name of Product',
    right_on='BRANDS',
    how='left'  # 左连接保证主表原有数据不丢失
).drop(columns=['BRANDS'])  # 删除匹配带来的重复品牌列

# 打印结果验证
print(df_result)

运行结果

执行代码后输出的结果完全匹配需求:

Name of Product  QTY        TYPE  SEGMENT
0        Iphone X    9  Smartphone  PREMIUM
1              HP    7      LAPTOP     GOLD
2      Galaxy S20    8  Smartphone     GOLD
3         MAC Pro    6      LAPTOP  PREMIUM

注意事项

  • 如果你的源数据存在于Excel/CSV文件中,把构造DataFrame的部分替换为pd.read_excel('文件路径.xlsx', sheet_name='对应表名')或者pd.read_csv('文件路径.csv')即可
  • 如果存在不同产品类型下同名品牌、对应分段不同的情况(比如某品牌同时做笔记本和手机,两个品类分段不一致),用更严谨的双字段匹配逻辑,避免匹配错误:
# 给分段表补充TYPE字段,和主表的TYPE字段对应
df_laptop_seg['TYPE'] = 'LAPTOP'
df_phone_seg['TYPE'] = 'Smartphone'
segment_mapping_strict = pd.concat([df_laptop_seg, df_phone_seg], ignore_index=True)

# 同时按 品牌名+产品类型 两个维度匹配
df_result_strict = df_product.merge(
    segment_mapping_strict,
    left_on=['Name of Product', 'TYPE'],
    right_on=['BRANDS', 'TYPE'],
    how='left'
).drop(columns=['BRANDS'])
  • 匹配结果中如果SEGMENT列出现空值,说明对应产品没有在分段表中配置映射规则,排查补充分段表数据即可
  • 需要把结果导出到本地的话,直接执行df_result.to_excel('匹配结果.xlsx', index=False)就能导出成Excel文件,导出CSV换用to_csv方法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 11:57:20