我目前有两个充满对象的csv文件。其中一个csv文件中的对象包含对象ID和各种其他信息字段。另一个包含对象id,它引用第一个文件以及有关对象的其他信息。
我正在尝试输出包含每个对象的所有信息的第三个csv文件。传统上循环传播速度太慢,因为其中一个文件中有大约300万个对象。是否存在使该过程更有效的python包或其他解决方案?
答案 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)