У меня есть два файла 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
с тем же форматом, что и выше ожидаемый результат.
На заметку, имеет ли смысл сортировать файлы и добавлять их?У них одинаковое количество строк и категорий.