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

如何用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 10:43:29