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

Python中批量识别重复DataFrame并统计高频重复文件的实现求助

解决CSV重复文件检测与统计方案

针对你处理400个CSV文件的需求,以下是优化后的实现方案,解决你提到的形状检查、多文件兼容以及相同文件分组存储的问题:

核心思路

  1. 批量读取CSV文件,用字典统一管理文件信息,避免单独定义变量
  2. 优先按文件形状(行数+列数)分组,快速排除不可能重复的文件
  3. 对同形状文件按第一列排序后生成唯一哈希值,相同内容的文件哈希值一致
  4. 按哈希值分组统计重复文件,最终找出出现次数最多的组

完整代码实现

import pandas as pd
import os
import hashlib

def get_df_hash(df):
    # 生成排序后DataFrame的唯一哈希值(忽略索引)
    return hashlib.sha256(pd.util.hash_pandas_object(df, index=False).values).hexdigest()

# 替换为你的CSV文件所在目录路径
csv_directory = "./csv_files"
file_records = {}

# 批量读取并处理所有CSV文件
for file_name in os.listdir(csv_directory):
    if not file_name.endswith(".csv"):
        continue
    file_path = os.path.join(csv_directory, file_name)
    # 强制读取前2列,避免文件中存在多余列干扰判断
    df = pd.read_csv(file_path, usecols=[0, 1], header=None)
    df_shape = df.shape
    # 按第一列排序并重置索引,消除原始排序差异
    sorted_df = df.sort_values(by=0).reset_index(drop=True)
    # 计算哈希值作为内容唯一标识
    df_hash = get_df_hash(sorted_df)
    file_records[file_name] = (df_shape, df_hash)

# 按形状分组,仅同形状文件参与后续比较
shape_based_groups = {}
for fname, (shape, hsh) in file_records.items():
    shape_based_groups.setdefault(shape, {}).setdefault(hsh, []).append(fname)

# 筛选出重复文件组并排序
duplicate_groups = []
for shape, hash_groups in shape_based_groups.items():
    for hsh, fnames in hash_groups.items():
        if len(fnames) > 1:
            duplicate_groups.append((len(fnames), shape, fnames))

# 输出结果
if duplicate_groups:
    # 按重复次数降序排列
    duplicate_groups.sort(reverse=True, key=lambda x: x[0])
    most_freq_group = duplicate_groups[0]
    print(f"重复次数最多的文件组:")
    print(f"重复次数:{most_freq_group[0]}")
    print(f"文件形状:{most_freq_group[1]}")
    print(f"包含文件:{most_freq_group[2]}")
else:
    print("未检测到重复的CSV文件")

针对你痛点的优化说明

  • 完善形状检查逻辑:通过shape_based_groups字典直接按文件形状分组,不同形状的文件完全隔离,无需逐个比较,大幅提升效率,同时避免无效计算。
  • 兼容任意数量文件:用file_records字典存储所有文件的形状和哈希信息,不管是8个测试文件还是400个正式文件,都能无缝处理,无需手动定义变量。
  • 存储重复文件的文件名:最终通过哈希分组得到的是文件名列表,比存储变量名更实用(批量处理时不可能给每个文件单独定义变量),直接对应到实际文件,方便后续操作。

内容的提问来源于stack exchange,提问作者Y. Pat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:35:20