Mehrere CSV-Dateien zusammenführen, ohne dass die Header wiederholt werden (mit Python) [geschlossen]

9

Ich bin ein Anfänger mit Python. Ich habe mehrere CSV-Dateien (mehr als 10), und alle von ihnen haben die gleiche Anzahl von Spalten. Ich möchte alle von ihnen in eine einzige CSV-Datei zusammenführen, wo ich keine Header wiederholt habe.

Also im Wesentlichen muss ich nur die erste Zeile mit allen Headern haben und ab dann müssen alle Zeilen aus allen CSV-Dateien zusammengeführt werden. Wie mache ich das?

Jede Hilfe ist willkommen.

Danke!

    
dotpy_novice 19.05.2015, 20:25
quelle

4 Antworten

17

Obwohl ich denke, dass die beste Antwort diejenige von @valentin ist, können Sie dies tun, ohne das csv Modul zu verwenden:

%Vor%     
m.wasowski 19.05.2015, 21:43
quelle
19

Wenn Sie auf einem Linux-System sind:

%Vor%     
valentin 19.05.2015 20:36
quelle
7

Wenn dir der Overhead nichts ausmacht, könntest du Pandas verwenden, die mit gängigen Python-Distributionen ausgeliefert werden. Wenn Sie planen, mehr mit Tabellen Tabellen zu tun, empfehle ich die Verwendung von Pandas, anstatt zu versuchen, Ihre eigenen Bibliotheken zu schreiben.

%Vor%

Nur ein bisschen mehr auf Pandas. Da es sich um Tabellenkalkulationsdaten handelt, weiß es, dass die erste Zeile ein Header ist. Beim Lesen einer CSV wird die Datentabelle von der Kopfzeile getrennt, die als Metadaten des dataframe , des Standard-Datentyps in Pandas, gespeichert wird. Wenn Sie mehrere dieser dataframes concaten, verkettet es nur die Datenteile, wenn ihre Header identisch sind. Wenn die Header nicht identisch sind, schlägt es fehl und gibt Ihnen einen Fehler. Wahrscheinlich eine gute Sache, falls Ihr Verzeichnis mit CSV-Dateien von einer anderen Quelle verschmutzt ist.

Eine andere Sache: Ich habe gerade sorted() um die interesting_files hinzugefügt. Ich nehme an, dass Ihre Dateien der Reihe nach benannt sind und diese Reihenfolge beibehalten werden sollte. Ich bin mir nicht sicher über glob, aber die Funktionen os geben Dateien nicht unbedingt nach ihrem Namen sortiert zurück.

    
P.R. 19.05.2015 21:11
quelle
1

Ihre Einrückung ist falsch, Sie müssen die Schleife in den With Block legen. Sie können das Dateiobjekt auch an writer.writerows übergeben.

%Vor%     
Padraic Cunningham 19.05.2015 20:55
quelle

Tags und Links