【发布时间】:2019-11-20 13:49:12
【问题描述】:
拥有约 1000 万个 GZipped CSV 文件的集合,每个文件都包含 100-1000 行和 >2000 列。每个文件还包含一个标题。
在每个 CSV 文件中都有两个重要的列,“ID”和“目标”。
我正在尝试删除具有重复“目标”的行,但将要删除的行中的 ID 与不会被删除的行一起保留。
例如
输入:
CSV1
| ID | Target |
|-------|------------------------------|
| IX213 | C1=CC(=CC=C1CC(=O)C(=O)O)O |
| IX412 | CN1C=NC2=C1C(=O)N(C(=O)N2C)C |
CSV2
| ID | Target |
|-------|------------------------------|
| BC144 | CN1C=NC2=C1C(=O)N(C(=O)N2C)C |
| BC155 | C(CC(=O)O)C(C(=O)O)N |
输出:
CSV1*
| ID | Target |
|--------------|------------------------------|
| IX213 | C1=CC(=CC=C1CC(=O)C(=O)O)O |
| IX412; BC144 | CN1C=NC2=C1C(=O)N(C(=O)N2C)C |
CSV2*
| ID | Target |
|-------|------------------------------|
| BC155 | C(CC(=O)O)C(C(=O)O)N |
这对于使用 Pandas (Python) 等的少量文件来说是很简单的,但希望有人可能有更好的方法来处理具有数十亿条目的数百万个文件。
【问题讨论】:
-
您是只成对合并文件,还是需要将所有文件合并到第一个?
-
您是否探索过为此使用数据库?假设这不是您将对这些数据执行的唯一操作,对其进行规范化和索引以进行随机访问应该会在便利性和执行速度方面提供快速而可观的回报(即使像我一样,您并不特别喜欢 SQL )。
-
# 您是只合并文件成对,还是需要将所有文件合并到第一个? # 对所有条目进行重复数据删除并将所有重复项合并为一个。 - 没有尝试过为此使用 SQL,但我应该硬着头皮去做这件事可能是对的,因为我将不止一次使用它。
标签: python algorithm hash duplicates