write una leer exportar example ejemplos datos como columna archivo python csv

una - python csv writer example



Python Unirse a los archivos csv donde la clave es el primer valor de la columna (1)

Intento unir dos archivos csv donde la clave es el valor de la primera columna. No hay encabezado
Los archivos tienen diferente número de líneas y filas.
El orden del archivo debe ser preservado.

presentar un:

john,red,34 andrew,green,18 tonny,black,50 jack,yellow,27 phill,orange,45 kurt,blue,29 mike,pink,61

archivo b:

tonny,driver,new york phill,scientist,boston

resultado deseado:

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

Examiné todos los temas relacionados y estoy seguro de que algunos de ustedes van a marcar esta pregunta como duplicada, pero aún no he encontrado la solución.

Agarré la solución basada en diccionario, pero este enfoque no maneja el orden de línea de la condición de archivo ''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)

También me gustaría evitar poner estos archivos csv en la base de datos como sqlite o usar el módulo pandas.

Gracias por adelantado


Algo como

import csv from collections import OrderedDict with open(''b.csv'', ''rb'') as f: r = csv.reader(f) dict2 = {row[0]: row[1:] for row in r} with open(''a.csv'', ''rb'') as f: r = csv.reader(f) dict1 = OrderedDict((row[0], row[1:]) for row in r) result = OrderedDict() for d in (dict1, dict2): for key, value in d.iteritems(): result.setdefault(key, []).extend(value) with open(''ab_combined.csv'', ''wb'') as f: w = csv.writer(f) for key, value in result.iteritems(): w.writerow([key] + value)

produce

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

(Tenga en cuenta que no me molesté en protegerme contra el caso en el que dict2 tiene una clave que no está en dict1 ; eso se agrega fácilmente si lo desea).