当前位置: 首页 > news >正文

比较两个csv文件的内容是否一致

可以使用 pandas快速、可靠地比较两个 CSV 文件内容是否一致。以下是几种常用方法,从简单行列比较,到精细字段逐个比较:


✅ 方法一:简单比较(结构 + 内容)

import pandas as pd# 加载两个 CSV 文件(确保读取方式相同)
df1 = pd.read_csv('file1.csv', dtype=str)
df2 = pd.read_csv('file2.csv', dtype=str)# 比较结构和内容是否完全一致
is_equal = df1.equals(df2)print("两个 CSV 内容是否完全一致?", is_equal)

✅ 方法二:逐行逐列对比,找出差异

import pandas as pddf1 = pd.read_csv('file1.csv', dtype=str)
df2 = pd.read_csv('file2.csv', dtype=str)# 确保两个 DataFrame 行列一致
if df1.shape != df2.shape:print("两个文件行数或列数不同!")
else:# 生成差异表diff = (df1 != df2)if diff.any().any():print("发现不一致的内容:")diff_locations = diff.stack()[diff.stack()]print(diff_locations)# 可显示不同值for idx, col in diff_locations.index:print(f"行 {idx}, 列 {col} 不同:file1='{df1.at[idx, col]}', file2='{df2.at[idx, col]}'")else:print("两个文件内容完全一致。")

✅ 方法三:文件哈希比较(最粗略)

适合文件内容相同但不比较顺序或格式:

import hashlibdef hash_file(path):with open(path, 'rb') as f:return hashlib.md5(f.read()).hexdigest()hash1 = hash_file('file1.csv')
hash2 = hash_file('file2.csv')print("文件内容是否一致:", hash1 == hash2)

但注意:

  • 字段顺序不同也会判定为不一致
  • 适合快速判断原始字节流是否一样

🔧 可选参数建议

如果你有换行、富文本或空白问题,推荐统一以下参数:

df1 = pd.read_csv('file1.csv', quoting=1, dtype=str, keep_default_na=False)
df2 = pd.read_csv('file2.csv', quoting=1, dtype=str, keep_default_na=False)

🧠 总结

方式判断精度适合情况
df1.equals(df2)精确快速判断是否完全相同
按单元格比较查找哪些值不同
文件哈希粗略大文件快速比对,结构不敏感

http://www.dtcms.com/a/267771.html

相关文章:

  • 隐马尔可夫模型(HMM):观测背后的状态解码艺术
  • [01背包]494.目标和
  • SQL128 统计2021年未完成试卷作答数大于1的有效用户
  • Mybatis-Plus使用
  • 基于大模型建设的AI智能报表系统
  • Day05:Python中的并发和并行(3)
  • speech_sambert-hifigan_tts_zh-cn_16k的docker部署
  • 【电赛培训】运算放大器、滤波器
  • 关于 JNI 函数逆向(从 Java 到 native)
  • c++文字游戏_闯关打怪
  • 查看linux中steam游戏的兼容性
  • centos8.5安装jdk21详细安装教程
  • 网络编程(二)TCP和UDP
  • BM6 判断链表中是否有环(牛客)
  • 2025年- H92-Lc200-- 64.最小路径和(多维动态规划)--Java版
  • 详解存储单位、内存寻址及数据存储方式
  • Feign调用报“请求方法POST不支持“错误
  • WPF学习笔记(25)MVVM框架与项目实例
  • 基于pcl点云库实现激光雷达数据采集
  • java整合itext pdf实现自定义PDF文件格式导出
  • 调参——optuna
  • Python 面向对象编程(OOP)全面详解:类、对象与 API
  • 【算法刷题记录(简单题)002】字符串字符匹配(java代码实现)
  • 线程池的七个参数设计源于对高并发场景下资源管理、系统稳定性与性能平衡的深刻洞察
  • Policy Gradient【强化学习的数学原理】
  • 【C语言刷题】第十一天:加量加餐继续,代码题训练,融会贯通IO模式
  • JMM--数据原子操作
  • Python asyncio库与GIL之间的关系,是否能够解决核心问题?
  • Spring--循环依赖以及三级缓存详解
  • Linux安装java后没法运行