Python对比两个Excel表格删除共有值后导出CSV的代码问题求解
原有代码问题排查
- 循环删除索引偏移:遍历使用的是表的原始长度,删除行后剩余行索引会自动前移,导致后续循环跳过部分待检测行,无法删全所有重复项
- 嵌套循环效率极低:两层循环的时间复杂度为O(n*m),数据量稍大就会运行缓慢
- 频繁执行导出操作:每次命中重复项就写入一次CSV,属于完全无效的IO操作
优化实现代码
import pandas as pd # 读取两个Excel文件 data_1 = pd.read_excel(r'names1.xlsx') data_2 = pd.read_excel(r'force_names.xlsx') # 提取第二张表的待排除姓名列表 exclude_names = data_2['FullName'].tolist() # 批量筛选出第一张表中不存在于排除列表的记录 filtered_data = data_1[~data_1['Full_Name'].isin(exclude_names)] # 导出最终结果到CSV filtered_data.to_csv(r"/Users/name/Desktop/Reports/Names.csv", index=False, encoding='utf-8-sig')
代码说明
- 用pandas内置
isin()方法做批量匹配,替代嵌套循环,运行效率提升显著 - 采用反向筛选逻辑代替逐行删除,完全规避索引偏移问题,所有重复姓名会被一次性排除
index=False参数控制导出时不额外添加pandas自动生成的行索引列,encoding='utf-8-sig'解决中文在Windows系统下打开CSV乱码的问题,不需要可以删除
内容的提问来源于stack exchange,提问作者akejay123
相关产品推荐
相关产品推荐

