Zusammenführen von zwei CSV-Dateien mit Python
OK, ich habe gelesen, einige threads hier auf Stack Overflow. Ich dachte, das wäre ziemlich einfach für mich zu tun, aber ich finde, dass ich immer noch nicht, haben ein sehr gutes Verständnis von Python. Ich habe versucht, das Beispiel befindet sich auf Wie kombiniert man 2 csv-Dateien mit gängigen Spalte Wert, aber beide Dateien haben unterschiedliche Anzahl von Zeilen und das war hilfreich, aber ich habe noch nicht die Ergebnisse, die ich hoffte, zu erreichen.
Im wesentlichen habe ich 2 csv-Dateien mit einem gemeinsamen ersten Spalte. Ich möchte das Zusammenführen der 2. also
filea.csv -
Titel,Bühne,jan,feb verdammt,3.001,0.421,0.532 ok,2.829,1.036,0.751 drei,1.115,1.146,2.921
fileb.csv -
Titel,mar,apr,Mai,jun, verdammt,0.631,1.321,0.951,1.751 ok,1.001,0.247,2.456,0.3216 drei,0.285,1.283,0.924,956
Ausgabe.csv-Datei (nicht die, die ich bin, sondern was ich will)
Titel,Bühne,jan,feb,mar,apr,Mai,jun verdammt,3.001,0.421,0.532,0.631,1.321,0.951,1.751 ok,2.829,1.036,0.751,1.001,0.247,2.456,0.3216 drei,1.115,1.146,2.921,0.285,1.283,0.924,956
Ausgabe.csv-Datei (die Ausgabe, die ich tatsächlich habe)
Titel,feb,Mai ok,0.751,2.456 drei,2.921,0.924 verdammt,0.532,0.951
Den code, den ich versuchte:
'''
testing merging of 2 csv files
'''
import csv
import array
import os
with open('Z:\\Desktop\\test\\filea.csv') as f:
r = csv.reader(f, delimiter=',')
dict1 = {row[0]: row[3] for row in r}
with open('Z:\\Desktop\\test\\fileb.csv') as f:
r = csv.reader(f, delimiter=',')
#dict2 = {row[0]: row[3] for row in r}
dict2 = {row[0:3] for row in r}
print str(dict1)
print str(dict2)
keys = set(dict1.keys() + dict2.keys())
with open('Z:\\Desktop\\test\\output.csv', 'wb') as f:
w = csv.writer(f, delimiter=',')
w.writerows([[key, dict1.get(key, "''"), dict2.get(key, "''")] for key in keys])
Jede Hilfe wird sehr geschätzt.
- Können Sie beschreiben, was Sie wollen in einer einfacheren Weg,?, vielleicht sagen Sie etwas wie: ich möchte der Monat die Spalten, die zusammengeführt werden, rest Spalten von Dateix
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ich arbeiten bin mit
csv
Dateien, ich benutze oft die pandas Bibliothek. Es macht die Dinge wie diese sehr einfach. Zum Beispiel:Einige Erklärung folgt. Zunächst Lesen wir in den csv-Dateien:
und wir sehen, dass es eine extra Spalte mit Daten (beachten Sie, dass die erste Zeile von
fileb.csv
--title,mar,apr,may,jun,
-- hat ein zusätzliches Komma am Ende). Wir können loszuwerden, die leicht genug:Nun können wir Zusammenführen
a
undb
auf die Spalte "title":und schließlich schreiben dies:
Herstellung:
.dropna()
Methode ohnehow="all"
; sonst kann es zum löschen von Spalten wenn ALLE Zellen leer sind.Müssen Sie alle zusätzlichen Zeilen in die Dateien in Ihrem Wörterbuch, nicht nur einer von Ihnen:
Dann, da die Werte in die dictionaries sind Listen, die Sie benötigen, um einfach verketten Listen zusammen: