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

如何对比两个CSV文件列值并生成差异结果CSV文件?

对比两个CSV文件并生成差异文件的可行方案

嘿,我明白你需要提取两个CSV文件的列值差异并生成新文件的需求,这在数据校验、版本跟踪场景里特别常见。下面给你两种实用的方案,你可以根据自己的技术偏好选择:

方案一:用Python Pandas实现灵活对比

如果熟悉Python,Pandas是个非常灵活的工具,能自定义处理各种差异场景:

  1. 先安装Pandas(如果还没装):
pip install pandas
  1. 编写对比脚本,假设你有一个唯一标识列(比如id)用来匹配两行是否为同一记录:
import pandas as pd

# 加载两个CSV文件
df_old = pd.read_csv('CSVFile1.csv')
df_new = pd.read_csv('CSVFile2.csv')

# 以唯一标识列合并,标记每行的来源
merged_df = pd.merge(
    df_old, 
    df_new, 
    on='id', 
    how='outer', 
    suffixes=('_old', '_new'), 
    indicator=True
)

# 筛选出新增、删除的行
added_or_removed = merged_df[merged_df['_merge'] != 'both']

# 筛选出列值有修改的行
modified_rows = merged_df[merged_df['_merge'] == 'both'].copy()
# 遍历所有列,找出值不同的记录
for col in df_old.columns:
    if col != 'id':
        modified_rows = modified_rows[modified_rows[f'{col}_old'] != modified_rows[f'{col}_new']]

# 合并所有差异行并去重
final_diff = pd.concat([added_or_removed, modified_rows]).drop_duplicates(subset='id')

# 保存差异结果到新CSV
final_diff.to_csv('CSV_Differences.csv', index=False)

注意点:

  • 如果没有唯一标识列,你可以尝试用所有列做匹配,但这种方式容易误判,建议尽量确定一个唯一键。
  • 处理空值时,可以在加载文件时用fillna填充默认值,避免因NaN导致的不匹配。

方案二:用命令行工具csv-diff快速完成对比

如果不想写代码,csv-diff是个轻量的命令行工具,能直接输出结构化差异:

  1. 安装工具:
pip install csv-diff
  1. 运行对比命令,指定唯一标识列(比如id):
csv-diff CSVFile1.csv CSVFile2.csv --key id > CSV_Differences.csv

这个命令会直接生成包含新增、删除、修改记录的差异文件,输出格式清晰,适合快速校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:36:45