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

如何用Python实现Vlookup并生成指定格式的匹配状态列

Python实现类似Excel Vlookup的ID匹配(标记OK/KO)

问题分析

你的现有代码存在几个关键问题:

  1. 导入了numpy和openpyxl但未实际使用,无需保留;
  2. merge语句中on=['ID','ID']是错误写法,只需指定单个ID列;
  3. 默认的内连接(inner join)会只保留两边都匹配的行,无法得到匹配失败的KO结果;
  4. 缺少生成OK/KO标记的逻辑。

以下是两种符合需求的实现方案:


方案一:保留原表所有行,新增匹配结果列

此方案会保留A.xlsx的全部数据,新增一列显示匹配状态:

import pandas as pd

# 文件路径
initial_workbook = 'A.xlsx'
info_workbook = 'B.xlsx'
output_workbook = 'outbook.xlsx'

# 读取Excel文件
df_initial = pd.read_excel(initial_workbook)
df_info = pd.read_excel(info_workbook)

# 标准化A表列名(保持你的原有处理逻辑)
df_initial.columns = (df_initial.columns.str.strip().str.upper()
                      .str.replace(' ', '_')
                      .str.replace('(', '')
                      .str.replace(')', ''))

# 提取B表中所有唯一ID,用于快速匹配
b_unique_ids = set(df_info['ID'].unique())

# 新增匹配结果列:ID存在于B表则标记OK,否则KO
df_initial['Match_Result'] = df_initial['ID'].apply(lambda x: 'OK' if x in b_unique_ids else 'KO')

# 输出结果到Excel
df_initial.to_excel(output_workbook, index=False)

方案二:填充原表空的Status列

如果需要直接将匹配结果填入A.xlsx原本为空的Status列,可使用此方案:

import pandas as pd

initial_workbook = 'A.xlsx'
info_workbook = 'B.xlsx'
output_workbook = 'outbook.xlsx'

df_initial = pd.read_excel(initial_workbook)
df_info = pd.read_excel(info_workbook)

# 标准化列名
df_initial.columns = (df_initial.columns.str.strip().str.upper()
                      .str.replace(' ', '_')
                      .str.replace('(', '')
                      .str.replace(')', ''))

# 提取B表ID集合
b_unique_ids = set(df_info['ID'].unique())

# 填充Status列
df_initial['STATUS'] = df_initial['ID'].apply(lambda x: 'OK' if x in b_unique_ids else 'KO')

# 输出结果
df_initial.to_excel(output_workbook, index=False)

补充说明

  • 使用set存储B表ID是为了提升匹配效率,尤其当数据量较大时,集合的查找速度远快于列表;
  • 如果需要同时关联B表中的其他字段(如Date),可以改用左连接(how='left')的方式,通过_merge列判断匹配状态:
df_merged = pd.merge(df_initial, df_info, on='ID', how='left', indicator=True)
df_initial['Match_Result'] = df_merged['_merge'].map({'both': 'OK', 'left_only': 'KO'})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:50:26