Python Łączenie plików csv, gdzie klucz jest wartością pierwszej kolumny
Próbuję połączyć dwa pliki csv, gdzie kluczem jest wartość pierwszej kolumny. Nie ma nagłówka.
Pliki mają różną liczbę linii i wierszy.
Kolejność plików a musi zostać zachowana.
Plik a:
john,red,34
andrew,green,18
tonny,black,50
jack,yellow,27
phill,orange,45
kurt,blue,29
mike,pink,61
plik b:
tonny,driver,new york
phill,scientist,boston
pożądany rezultat:
john,red,34
andrew,green,18
tonny,black,50,driver,new york
jack,yellow,27
phill,orange,45,scientist,boston
kurt,blue,29
mike,pink,61
Sprawdziłem wszystkie powiązane wątki i jestem pewien, że niektórzy z was zaznaczą to pytanie duplikatem, ale po prostu nie znalazłem jeszcze rozwiązania.
Chwyciłem rozwiązanie oparte na słowniku, ale to podejście nie obsługuje zachowania kolejności linii z pliku „a”.
import csv
from collections import defaultdict
with open('a.csv') as f:
r = csv.reader(f, delimiter=',')
dict1 = {}
for row in r:
dict1.update({row[0]: row[1:]})
with open('b.csv') as f:
r = csv.reader(f, delimiter=',')
dict2 = {}
for row in r:
dict2.update({row[0]: row[1:]})
result = defaultdict(list)
for d in (dict1, dict2):
for key, value in d.iteritems():
result[key].append(value)
Chciałbym również uniknąć umieszczania tych plików csv w bazie danych, takich jak sqlite lub za pomocą modułu pandas.
Z góry dziękuję