Python-如何删除巨大的CSV文件(超过200万行)中的重复项

时间:2018-08-24 08:18:37

标签: python pandas csv dataframe duplicates

我们制作了一个图像识别API,该API接受图像URL并响应图像描述。此过程大约需要5-20秒。 我有一个巨大的CSV文件,其中包含200+百万行来自不同来源的图像URL。我发现CSV文件具有来自不同来源的重复图像URL。因此,我不需要将所有URL发送到图像识别API,只需要将唯一的URL发送到API,但是我需要填充API对所有行的响应。

我以10万行的块读取CSV文件,并创建了一组唯一的图像URL,并在API中对其进行处理,然后再次将结果填充回CSV文件。但这最终导致了内存问题(16 GB RAM),我无法创建一组具有200+百万行的唯一图像URL。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

两种可能的方法:

SQL选择不同

将CSV文件加载到数据库中,然后使用SQL选择Distinct并将查询结果导出为Csv文件。某些数据库可让您将CSV文件定义为表格,并允许您在CSV文件上运行SQL查询

从UrlTable中选择不同的URL

对文件排序

您可以

  • 使用操作系统的sort命令对URL上的文件进行排序(Windows和Linux都具有Sort命令)。
  • 读取文件并检查URL是否与上一个URL不同。您只需要在URL更改时检查该URL

答案 1 :(得分:-1)

不确定这种方法是否适用于如此大的文件。但是,您可以尝试一下。

import csv
entries = set()

with open("HugeCSVfile.csv", 'r') as lookuplist:
    for col in csv.reader(lookuplist):
        key = (col[0].lower()) # add rows you want to compare and remove the duplicates.
        if key not in entries:
            entries.add(key)
            print(key)