如何用Python实现多Excel文件单列VLOOKUP自动化?
用Python实现多Excel文件基于Email列的VLOOKUP自动化匹配填充
依赖准备
首先确保安装处理Excel所需的库:
pip install pandas openpyxl
实现步骤与代码
核心思路是用pandas读取所有文件,以Email列为键,通过左连接将A、B、C、D的数据合并到X文件中,完全替代Excel的VLOOKUP功能。
import pandas as pd # 1. 定义所有Excel文件的路径,替换成你的实际路径 file_paths = { "X": "X.xlsx", "A": "A.xlsx", "B": "B.xlsx", "C": "C.xlsx", "D": "D.xlsx" } # 2. 读取所有文件并预处理 dfs = {} for file_name, path in file_paths.items(): # 读取文件,强制Email列为字符串,避免格式匹配错误 df = pd.read_excel(path, dtype={"Email": str}) # 去重:同一Email只保留第一行数据 df = df.drop_duplicates(subset="Email", keep="first") # 统一Email大小写(如果需要,避免大小写差异导致匹配失败) df["Email"] = df["Email"].str.lower() dfs[file_name] = df # 3. 以X为基础,依次合并其他文件的数据 result_df = dfs["X"].copy() # 左连接:保留X的所有行,匹配不到的列填充NaN for source_file in ["A", "B", "C", "D"]: result_df = pd.merge( result_df, dfs[source_file], on="Email", how="left", suffixes=("", f"_{source_file}") # 重复列名加后缀区分来源 ) # 4. 保存结果到新文件(建议不直接覆盖原X文件) result_df.to_excel("filled_X.xlsx", index=False, engine="openpyxl")
关键细节说明
- 格式统一:强制
Email列为字符串并统一大小写,避免因数字格式、大小写差异导致匹配失败。 - 去重处理:提前删除重复的
Email行,防止合并后出现冗余数据。 - 左连接逻辑:完全对应Excel VLOOKUP的
近似匹配=False逻辑,保留X文件的所有原始行,仅填充匹配到的数据。 - 列名冲突处理:通过
suffixes参数给重复列名添加来源文件后缀,避免列名覆盖。 - 空值处理:匹配不到的数据会显示
NaN,可根据需求添加result_df.fillna(0, inplace=True)这类代码填充空值。
内容的提问来源于stack exchange,提问作者Sanket_1994
相关产品推荐
相关产品推荐

