Python 将CSV文件与缺少的ID组合

Python 将CSV文件与缺少的ID组合,python,file,csv,Python,File,Csv,我有两个CSV文件-output.CSV和result.CSV output.csv id, data1, data2, data3 56, 78, 38, 223 67, 12, 35, 52 1, 7, 100, 500 id, data4, data5, data6 56, at, text, 78 1, random, text, 23 id, data1, data2, data3, data4, data5, data6 56, 78, 38, 223, at, text, 78

我有两个CSV文件-
output.CSV
result.CSV

output.csv

id, data1, data2, data3
56, 78, 38, 223
67, 12, 35, 52
1, 7, 100, 500
id, data4, data5, data6
56, at, text, 78
1, random, text, 23
id, data1, data2, data3, data4, data5, data6
56, 78, 38, 223, at, text, 78
67, 12, 35, 52,,,
1, 7, 100, 500, random, text, 23
result.csv

id, data1, data2, data3
56, 78, 38, 223
67, 12, 35, 52
1, 7, 100, 500
id, data4, data5, data6
56, at, text, 78
1, random, text, 23
id, data1, data2, data3, data4, data5, data6
56, 78, 38, 223, at, text, 78
67, 12, 35, 52,,,
1, 7, 100, 500, random, text, 23
我想写一个函数来创建一个新的CSV文件,其中包含来自这两个文件的数据。某些文件缺少ID,这些ID应包含在文件中。例如,从上述文件:

组合文件.csv

id, data1, data2, data3
56, 78, 38, 223
67, 12, 35, 52
1, 7, 100, 500
id, data4, data5, data6
56, at, text, 78
1, random, text, 23
id, data1, data2, data3, data4, data5, data6
56, 78, 38, 223, at, text, 78
67, 12, 35, 52,,,
1, 7, 100, 500, random, text, 23

如何执行此操作?

您可以从第二个文件创建字典,并将其用作第一个文件的查找:

import csv
[h1, *d1], [h2, *d2] = list(csv.reader(open('output.csv'))), list(csv.reader(open('result.csv')))
_d1, _d2 = {a:b for a, *b in d1}, {a:b for a, *b in d2}
with open('combinedFiles.csv', 'w') as f:
  write = csv.writer(f)
  write.writerows([[*h1, *h2[1:]], *[[a, *(b+_d2.get(a, []))] for a, b in _d1.items()]])
输出:

id,data1,data2,data3,data4,data5,data6
56,78,38,223,at,text,78
67,12,35,52,,,
1,7,100,500,random,text,23