[Python] unire dati da due csv
Andrea Ambu
andreambu a gmail.com
Sab 16 Ott 2010 18:59:38 CEST
2010/10/16 Simone Gabbriellini <simone.gabbriellini a gmail.com>:
> č corretto, perņ nel mio caso la lista dei nomi nei due csv non ha lo stesso ordine. potrei ordinarle perņ prima di iniziare il merge?
>
No, ordinarli prende tempo, e probabilmente il doppio della memoria,
se non sono tantissime righe (x colonne) conviene salvare un csv
(quello con meno colonne) tutto in memoria e poi iterare sul secondo e
scrivere al volo sul csv
def csv_merge(csvr_a, csvr_b, csvw_out):
a_dict = {}
a_fieldnames = None
for row_a in csvr_a:
if a_fieldnames == None:
a_fieldnames = row_a
else:
a_dict[row_a[0]] = row_a
b_fieldnames = None
for row_b in csvr_b:
if b_fieldnames == None:
b_fieldnames = row_b
csvw_out.writerow(a_fieldnames + b_fieldnames[1:])
else:
csvw_out.writerow(a_dict[row_b[0]] + row_b[1:])
csv_out = csv.writer(open('out.txt', "w+"))
csv_merge(coordReader, nodesReader, csv_out)
se dai come primo parametro il csv con meno colonne č meglio.
--
Andrea
Maggiori informazioni sulla lista
Python