Python对比两个CSV的Sl_no列 提取csv2缺失值并输出新文件
Python实现两个CSV指定列缺失值查找
实现思路
不需要关心sl_no列在两个CSV中的位置索引,直接按列名读取两个文件的目标列值,通过集合差集计算出csv1中存在、但csv2中缺失的sl_no值,最终将结果导出为新文件。
操作步骤
- 安装依赖库pandas,执行命令:
pip install pandas - 运行以下代码,注意把代码里的文件路径替换成你自己的文件实际路径:
import pandas as pd # 读取两个CSV源文件 df_csv1 = pd.read_csv("csv1.csv") df_csv2 = pd.read_csv("csv2.csv") # 统一处理列名:去除前后空格、转为小写,避免列名大小写/前后空格不一致导致的读取错误 df_csv1.columns = df_csv1.columns.str.strip().str.lower() df_csv2.columns = df_csv2.columns.str.strip().str.lower() # 提取两个表的sl_no列值,剔除空值后转为集合计算差集,得到csv2缺失的sl_no set_sl_no1 = set(df_csv1["sl_no"].dropna()) set_sl_no2 = set(df_csv2["sl_no"].dropna()) missing_values = set_sl_no1 - set_sl_no2 # 将缺失值导出为新CSV文件 pd.DataFrame({"missing_sl_no": list(missing_values)}).to_csv("missing_result.csv", index=False) # 控制台打印结果校验 print(f"已完成比对,csv2中缺失的sl_no共{len(missing_values)}个,结果已写入missing_result.csv") print("缺失值列表:", sorted(missing_values))
说明
- 代码自动按列名匹配目标字段,不管
sl_no列在两个CSV中排第几列都可以正常识别,不需要手动指定列索引 - 针对提供的样例数据,运行后得到的缺失值为
20,符合预期 - 如果文件中
sl_no列存在空值需要纳入比对,删掉代码里的.dropna()即可 - 如果CSV文件不在脚本运行的同目录下,把
read_csv里的文件名替换成文件的完整绝对路径即可
内容的提问来源于stack exchange,提问作者vidathri
相关产品推荐
相关产品推荐

