基于匹配列ID合并两个Excel工作表的Python实现求助
Python实现Excel按方括号内ID匹配合并的解决方案
嘿,刚接触Python也不用慌,这个Excel合并需求用pandas库就能轻松搞定,这是Python处理表格数据的神器。我给你一步步讲清楚怎么做:
第一步:先安装必要的库
首先得安装pandas(处理数据)和openpyxl(读写Excel文件),打开命令行运行:
pip install pandas openpyxl
第二步:完整代码实现(带注释)
直接上代码,每一步都给你标清楚作用:
import pandas as pd import re # 1. 读取两个Excel文件 # 替换成你实际的文件名哦 df1 = pd.read_excel("追溯报告.xlsx", engine="openpyxl") df2 = pd.read_excel("结果文件.xlsx", engine="openpyxl") # 2. 从df1的Column3中提取方括号内的ID(比如从[xyz-5536]A提取xyz-5536) df1["match_id"] = df1["Column3"].str.extract(r"\[(.*?)\]") # 3. 从df2的Column1中提取同样的ID(比如从[xyz-5536]A提取xyz-5536) df2["match_id"] = df2["Column1"].str.extract(r"\[(.*?)\]") # 4. 按提取的match_id合并两个表格,保留df1的所有行,追加Result1和Result2 merged_df = pd.merge(df1, df2[["match_id", "Result1", "Result2"]], on="match_id", how="left") # 5. 删掉临时的match_id列,整理成你要的最终列顺序 final_df = merged_df[["Column1", "Column2", "Column3", "Result1", "Result2"]] # 6. 把结果保存成新的Excel文件 final_df.to_excel("合并后的追溯报告.xlsx", index=False, engine="openpyxl") print("合并完成!新文件已生成~")
关键细节说明
- 正则表达式
r"\[(.*?)\]"的作用:专门提取方括号[]中间的内容,.*?会匹配任意字符直到遇到右括号为止,刚好能精准拿到你要的ID。 pd.merge的how="left"参数:保证Excel1里的每一行都会保留,不会因为匹配不到而丢失数据(当然你的数据里都是能匹配上的)。- 保存时
index=False:避免把pandas默认的行号写到Excel里,完全贴合你要的格式。
验证结果
运行完代码后,打开生成的合并后的追溯报告.xlsx,就是你想要的最终格式啦:
Column1 Column2 Column3 Result1 Result2
1 A [xyz-5536]A pass fail
2 B [xyz-5537]B fail pass
3 C [xyz-5538]C pass fail
4 D [xyz-5539]D fail pass
内容的提问来源于stack exchange,提问作者pradip solankar
相关产品推荐
相关产品推荐

