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

如何用Python匹配两个Excel表格的两列并找出指定数据差异?

用Pandas对比两个Excel中指定列组合的差异

你需要从Example1.xlsx里筛选Col1="A"的行,再找出其中Col2值在Example2.xlsx的Col1="A"行中不存在的记录。之前尝试拼接列值对比报错,原因是字符串和数字类型的列不能直接用+拼接,且两个数组的长度可能不一致,直接对比维度不匹配。

下面提供两种可行的解决方案:

方法一:利用集合快速匹配(高效简洁)

这种方法适合只需要快速筛选结果的场景:

import pandas as pd

# 读取两个Excel文件
df1 = pd.read_excel("Example1.xlsx")
df2 = pd.read_excel("Example2.xlsx")

# 分别筛选出Col1等于"A"的子数据集
df1_filtered = df1[df1["Col1"] == "A"]
df2_filtered = df2[df2["Col1"] == "A"]

# 把Example2中符合条件的Col2值转成集合,集合查找效率更高
valid_col2_values = set(df2_filtered["Col2"].tolist())

# 从Example1的筛选结果中,找出Col2不在合法集合里的行
result = df1_filtered[~df1_filtered["Col2"].isin(valid_col2_values)]

print(result)

运行后会输出预期结果:

Col1  Col2 Col3 Col4
2    A     9  def  uvw

方法二:用Merge左连接匹配(适合复杂关联场景)

如果需要保留更多关联比对的信息,可以用Pandas的左连接功能:

import pandas as pd

df1 = pd.read_excel("Example1.xlsx")
df2 = pd.read_excel("Example2.xlsx")

# 筛选Col1="A"的行
df1_a = df1[df1["Col1"] == "A"]
df2_a = df2[df2["Col1"] == "A"]

# 只保留df2中用于匹配的Col1和Col2列
match_cols = df2_a[["Col1", "Col2"]]

# 以Col1和Col2为匹配键,做左连接
merged_df = df1_a.merge(match_cols, on=["Col1", "Col2"], how="left", indicator=True)

# 筛选出只在Example1中存在的行
result = merged_df[merged_df["_merge"] == "left_only"].drop(columns="_merge")

print(result)

执行后同样会得到目标结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:13:09