如何用Python按UniqueID从XLSX拉取数据并写入同列名XLSX文件
需求说明:
编写Python脚本,基于两个XLSX文件,以Column_A作为唯一标识(UniqueID),将XLSX2中Column_B的数据全量同步到XLSX1对应的Column_B中。
初始数据状态:
XLSX1 XLSX2
Column_A Column_B Column_A Column_B
A A 21
B B 25
C C 2
D D 5
E E 9
F F 10
G G 15
H H 16
执行脚本后XLSX1目标状态:
XLSX1 XLSX2
Column_A Column_B Column_A Column_B
A 21 A 21
B 25 B 25
C 2 C 2
D 5 D 5
E 9 E 9
F 10 F 10
G 15 G 15
H 16 H 16
解决方案
使用pandas库高效处理Excel数据,步骤如下:
1. 依赖安装
首先安装所需库:
pip install pandas openpyxl
2. 完整脚本实现
import pandas as pd # 替换为你的实际文件路径 xlsx1_path = "XLSX1.xlsx" xlsx2_path = "XLSX2.xlsx" output_path = "updated_XLSX1.xlsx" # 读取两个Excel文件 df1 = pd.read_excel(xlsx1_path, engine="openpyxl") df2 = pd.read_excel(xlsx2_path, engine="openpyxl") # 以Column_A为键合并数据,保留XLSX1的所有行 merged_df = df1.merge(df2[["Column_A", "Column_B"]], on="Column_A", how="left", suffixes=('', '_from_xlsx2')) # 替换原Column_B为XLSX2的对应值,清理临时列 merged_df["Column_B"] = merged_df["Column_B_from_xlsx2"] merged_df.drop(columns=["Column_B_from_xlsx2"], inplace=True) # 保存处理后的文件 merged_df.to_excel(output_path, index=False, engine="openpyxl") print(f"数据同步完成,结果已保存至 {output_path}")
3. 代码说明
- 文件读取:通过
pd.read_excel读取XLSX文件,指定openpyxl引擎支持.xlsx格式。 - 数据合并:采用左连接(
how='left')保证XLSX1的所有行都被保留,仅匹配XLSX2中对应Column_A的Column_B数据。 - 列值替换:将合并后获取的XLSX2数据覆盖XLSX1原
Column_B,删除冗余的临时列。 - 结果保存:将处理后的数据导出为新Excel文件,
index=False避免生成多余的索引列。
注意事项
- 确保
Column_A在两个文件中是唯一标识,无重复值,否则可能导致匹配结果异常。 - 若需直接覆盖原XLSX1文件,可将
output_path设置为xlsx1_path,但建议先备份原文件。 - 若Excel包含多个工作表,需在
pd.read_excel中添加sheet_name参数指定目标工作表。
内容的提问来源于stack exchange,提问作者QuickSilver42

