尝试通过csv和python连接两个数据集

时间:2017-07-10 18:09:36

标签: python csv

我目前有两个充满对象的csv文件。其中一个csv文件中的对象包含对象ID和各种其他信息字段。另一个包含对象id,它引用第一个文件以及有关对象的其他信息。

我正在尝试输出包含每个对象的所有信息的第三个csv文件。传统上循环传播速度太慢,因为其中一个文件中有大约300万个对象。是否存在使该过程更有效的python包或其他解决方案?

1 个答案:

答案 0 :(得分:1)

这只需要将较小的csv文件中的数据保存在内存中。

import csv

extra_data {}
with open('smaller.csv', newline='') as fin1:
    reader = csv.reader(fin1)
    for row in reader:
        objid = row[0] # or whichever field has the object id
        extra_data[objid] = row[1:]

with open('bigger.csv', newline='') as fin2, open('combined.csv', 'w', newline='') as fout:
    reader = csv.reader(fin2)
    writer = csv.writer(fout)
    for row in reader:
        objid = row[0] # or whichever field has the object id
        new_row = row + extra_data.get(objid, [])
        writer.writerow(new_row)