[英]python:compare two large csv files by two reference columns and update another column
我有相当大的csv文件,大约需要400000行:
54.10,14.20,34.11
52.10,22.20,22.11
49.20,17.30,29.11
48.40,22.50,58.11
51.30,19.40,13.11
第二行大约250000行,其中第三列的数据已更新-第一和第二列是更新的参考:
52.10,22.20,22.15
49.20,17.30,29.15
48.40,22.50,58.15
我想建立第三个文件,例如:
54.10,14.20,34.11
52.10,22.20,22.15
49.20,17.30,29.15
48.40,22.50,58.15
51.30,19.40,13.11
它必须包含第一个文件中的所有数据,但这些行中的第二列中的第三列的值除外。
建议您看一下Pandas 合并功能 。 您应该能够做您想做的,它还将处理从CSV读取的数据(创建要合并的数据框)
一个仅具有csv
模块的 stdlib解决方案; 第二个文件读入内存(进入字典):
import csv
with open('file2.csv', 'rb') as updates_fh:
updates = {tuple(r[:2]): r for r in csv.reader(updates_fh)}
with open('file1.csv', 'rb') as infh, open('output.csv', 'wb') as outfh:
writer = csv.writer(outfh)
writer.writerows((updates.get(tuple(r[:2]), r) for r in csv.reader(infh)))
第一个with
语句可打开第二个文件,并在前两列上构建一个字典作为键。 假定这些在文件中是唯一的。
然后,第二个块打开第一个文件供读取,输出文件供写入,并将输入文件中的每一行写入输出文件,用更新的版本替换updates
字典中存在的任何行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.