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

使用Pandas加载CSV至DataFrame时如何过滤重复记录

关于Pandas读取CSV时能否直接过滤重复记录的解答

Pandas 原生read_csv()接口没有内置读取阶段自动过滤重复行的参数,无法在数据完全加载入内存前完成全量重复记录过滤。本质原因是CSV为逐行解析格式,要判定某一行是否为重复记录,必须将其与此前已读取的所有行做特征比对,这个逻辑和先加载为DataFrame再去重的计算过程完全一致,不存在本质的性能或内存差异。

日常处理普通大小的CSV文件时,直接在读取语句后链式调用去重方法即可,写法简洁,和“读取过程中处理”的使用体验没有区别:

import pandas as pd

# 全字段匹配去重
df = pd.read_csv("your_file.csv").drop_duplicates()

# 如果需要按指定字段判定重复,传入subset参数即可
# df = pd.read_csv("your_file.csv").drop_duplicates(subset=["user_id", "trade_no"])

如果处理体积远超可用内存的超大CSV文件,可以通过分块读取的方式在读取流程中渐进式去重,大幅降低峰值内存占用:

chunk_size = 10000 # 单块读取行数,可根据机器内存调整
temp_chunks = []
# 逐块读取文件
for chunk in pd.read_csv("your_large_file.csv", chunksize=chunk_size):
    # 先完成单块内的去重,减少待合并的数据量
    temp_chunks.append(chunk.drop_duplicates())
# 合并所有分块后,做一次跨分块的全局去重得到最终结果
df = pd.concat(temp_chunks, ignore_index=True).drop_duplicates()

注意:不存在比“加载后去重”性能明显更优的“读取时去重”方案。哪怕自行实现原生Python逐行读CSV、边读边判断重复的逻辑,底层同样需要缓存所有已出现行的哈希值做比对,和Pandas内置去重的效率差极小,直接使用Pandas原生链式写法的维护成本最低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 00:54:29