如何使用Python比较两个CSV文件并生成匹配校验标识列
Python CSV字段匹配校验实现方案
依赖说明
- 需要用到
pandas库处理CSV数据,未安装可执行命令:pip install pandas
完整实现代码
import pandas as pd # 读取两个CSV文件,round强制转字符串避免前导零丢失导致匹配失败 df_base = pd.read_csv('file.csv', dtype={'round': str}) df_dup = pd.read_csv('Dupfile.csv', dtype={'round': str}) # 基准表按round去重,确保每个round仅对应一条基准数据 df_base = df_base.drop_duplicates(subset='round', keep='first') # 定义需要校验的字段列表 check_cols = ['first', 'second', 'third', 'fourth', 'fifth', 'sixth'] # 构造基准映射字典:key为round,value为对应6个校验字段的元组 base_map = df_base.set_index('round')[check_cols].apply(tuple, axis=1).to_dict() # 逐行对比生成Correct列 df_dup['Correct'] = df_dup.apply( lambda row: 1 if tuple(row[check_cols]) == base_map.get(row['round'], ()) else 0, axis=1 ) # 输出结果文件,utf-8-sig编码避免中文乱码 df_dup.to_csv('result_Dupfile.csv', index=False, encoding='utf-8-sig')
逻辑说明
- 预构造基准映射字典,查询复杂度为O(1),比逐行遍历基准表对比效率更高,适配大文件场景
- 对比时将待校验行的6个字段打包成元组与基准元组直接对比,只要有一个字段值不一致就赋值0,全部匹配赋值1
- 兼容Dupfile中同一个round对应多条记录的场景,每条记录会单独完成校验
- 输出保留Dupfile原有全部字段,仅新增Correct列,符合需求
内容的提问来源于stack exchange,提问作者user11594234
相关产品推荐
相关产品推荐

