使用Python Pandas对比不同Excel表格列并移除重复值
使用Pandas移除跨Excel文件重复列值的方法
核心思路
先读取两个Excel文件的数据,提取需要对比的列,把要排除的值存成集合(大幅提升查询效率),再用isin()加取反操作过滤掉文件1中重复的值,最后可按需保存结果。
完整代码示例
import pandas as pd # 替换成你的实际文件路径和工作表名称 df1 = pd.read_excel("文件1.xlsx", sheet_name="表格1") df2 = pd.read_excel("文件2.xlsx", sheet_name="表格2") # 获取需要排除的值集合(假设两列列名都是"Age",按需替换) exclude_ages = set(df2["Age"].dropna()) # 过滤文件1:保留Age不在排除集合里的行 filtered_df = df1[~df1["Age"].isin(exclude_ages)] # 可选:将过滤后的结果保存为新Excel文件 filtered_df.to_excel("过滤后的文件1.xlsx", index=False)
代码细节解释
- 读取文件:
pd.read_excel()负责加载Excel数据,需确保文件路径正确,sheet_name可指定工作表名称或索引(比如0代表第一个工作表)。 - 构建排除集合:把文件2的目标列转成集合,同时用
dropna()去掉空值——集合的成员查询速度远快于DataFrame列查询,数据量大时优势明显。 - 过滤数据:
df1["Age"].isin(exclude_ages)生成布尔值序列,标记哪些值在排除列表里;前面加~取反,就得到需要保留的行。 - 保存结果:
to_excel()把过滤后的数据写入新文件,index=False避免把Pandas自动生成的索引列写入Excel。
注意事项
- 如果两个文件的目标列名不同(比如文件1是"年龄"、文件2是"Age"),需对应替换代码里的列名。
- 若不需要删除空值,可去掉
.dropna(),但空值不会匹配任何数值,一般不影响最终结果。 - 需求中"从对应列移除重复值"本质是删除包含重复值的整行,上述代码正好实现此效果,同时保留其他列的内容。
内容的提问来源于stack exchange,提问作者adean2121
相关产品推荐
相关产品推荐

