【发布时间】:2019-06-19 15:21:26
【问题描述】:
我有两个行相同但列不同的 csv 文件:
$ cat file1
category,a,b,c,d,e
apple,0,0,0,0,0
bear,1,1,1,1,1
$ cat file2
category,f,g,h,i,j
bear,10,10,10,10,10
apple,5,5,5,5,5
预期输出:
category,a,b,c,d,e,f,g,h,i,j
apple,0,0,0,0,0,5,5,5,5,5
bear,1,1,1,1,1,10,10,10,10,10
file1 和 file2 都是无序的,并且具有相同数量的匹配行(约 15000 行)。 file1 有 ~1000 列,file2 有 ~16000 列。我使用了以下方法:
import csv
with open ("file1.csv") as f:
first = {rows[0]:rows[1:] for rows in list(csv.reader(f))}
with open("file2.csv") as f:
for row in csv.reader(f):
if row[0] in first:
first[row[0]].extend(row[1:])
# print(first)
# {'category': ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'], 'apple': ['0', '0', '0', '0', '0', '5', '5', '5', '5', '5'], 'bear': ['1', '1', '1', '1', '1', '10', '10','10', '10', '10']}
我觉得我快要接近了,但我似乎无法使用与上述预期输出相同的格式编写first。
顺便说一句,对文件进行排序然后追加是否有意义?它们具有完全相同的行数和类别。
【问题讨论】: