Ich habe mehrere CSV-Dateien, die ich zusammengeführt habe. Allerdings muss ich zwischen den einzelnen Dateien eine leere Zeile einfügen, damit sie zusammenführen, sodass ich weiß, dass an diesem Punkt eine andere Datei beginnt. Versuchte alles. Bitte helfen Sie.Wie füge ich eine leere Zeile zwischen zusammengeführten Dateien hinzu
Antwort
Hier ist ein Beispielskript. Sie können die Methode mit einem nicht vorhandenen Schlüssel für enlarge the DataFrame
verwenden und den Wert der neuen Zeile festlegen.
Die einfachste Lösung scheint zu sein, eine Vorlage DataFrame
zu erstellen, die als Trennzeichen mit den gewünschten Werten verwendet wird. Dann fügen Sie es einfach in die Liste der Datenrahmen ein, um an geeigneten Positionen zu verketten.
Zuletzt entfernte ich die chdir
, da glob
in jedem Pfad suchen kann.
import glob
import pandas
def concatenate(input_dir, output_file_name):
file_list=glob.glob(input_dir + "/*.csv")
column_names=["Creation Date"
, "Author"
, "Tweet"
, "Language"
, "Location"
, "Country"
, "Continent"]
# Create a separator template
separator = pandas.DataFrame(columns=column_names)
separator.loc[0] = [""]*7
dataframes = []
for file_name in file_list:
print(file_name)
if len(dataframes):
# The list is not empty, so we need to add a separator
dataframes.append(separator)
dataframes.append(pandas.read_csv(file_name))
concatenated = pandas.concat(dataframes, axis=0)
concatenated.to_csv(output_file_name, index=None)
print(concatenated)
concatenate("input", ".out.csv")
Eine alternative, auch kürzer ist die Art und Weise verketteten DataFrame
iterativ zu bauen, die append
Methode.
def concatenate(input_dir, output_file_name):
file_list=glob.glob(input_dir + "/*.csv")
column_names=["Creation Date"
, "Author"
, "Tweet"
, "Language"
, "Location"
, "Country"
, "Continent"]
concatenated = pandas.DataFrame(columns=column_names)
for file_name in file_list:
print(file_name)
if len(concatenated):
# The list is not empty, so we need to add a separator
concatenated.loc[len(concatenated)] = [""]*7
concatenated = concatenated.append(pandas.read_csv(file_name))
concatenated.to_csv(output_file_name, index=None)
print(concatenated)
testete ich das Skript mit 3 Eingang CSV-Dateien:
Eingabe/1.csv
Creation Date,Author,Tweet,Language,Location,Country,Continent
2015-12-17,foo,Hello,EN,London,UK,Europe
2015-12-18,bar,Bye,EN,Manchester,UK,Europe
2015-12-28,baz,Hallo,DE,Frankfurt,Germany,Europe
Eingabe/2.csv
Creation Date,Author,Tweet,Language,Location,Country,Continent
2016-01-09,bar,Tweeeeet,EN,New York,USA,America
2016-01-09,cat,Miau,FI,Helsinki,Finland,Europe
Eingabe/3.csv
Creation Date,Author,Tweet,Language,Location,Country,Continent
2018-12-12,who,Hello,EN,Delhi,India,Asia
Als ich es lief, wurde das folgende auf der Konsole geschrieben:
Konsolenausgabe (mit concat)
input\1.csv
input\2.csv
input\3.csv
Creation Date Author Tweet Language Location Country Continent
0 2015-12-17 foo Hello EN London UK Europe
1 2015-12-18 bar Bye EN Manchester UK Europe
2 2015-12-28 baz Hallo DE Frankfurt Germany Europe
0
0 2016-01-09 bar Tweeeeet EN New York USA America
1 2016-01-09 cat Miau FI Helsinki Finland Europe
0
0 2018-12-12 who Hello EN Delhi India Asia
Die Konsolenausgabe der kürzeren Variante ist etwas anders (beachten Sie die Indizes in th Die erste Spalte), hat jedoch keine Auswirkungen auf die generierte CSV-Datei.
Konsolenausgabe (mit Anhängen)
input\1.csv
input\2.csv
input\3.csv
Creation Date Author Tweet Language Location Country Continent
0 2015-12-17 foo Hello EN London UK Europe
1 2015-12-18 bar Bye EN Manchester UK Europe
2 2015-12-28 baz Hallo DE Frankfurt Germany Europe
3
0 2016-01-09 bar Tweeeeet EN New York USA America
1 2016-01-09 cat Miau FI Helsinki Finland Europe
6
0 2018-12-12 who Hello EN Delhi India Asia
schließlich das ist, was die Ausgabe CSV es wie erzeugt Aussehen Datei:
out.csv
Creation Date,Author,Tweet,Language,Location,Country,Continent
2015-12-17,foo,Hello,EN,London,UK,Europe
2015-12-18,bar,Bye,EN,Manchester,UK,Europe
2015-12-28,baz,Hallo,DE,Frankfurt,Germany,Europe
,,,,,,
2016-01-09,bar,Tweeeeet,EN,New York,USA,America
2016-01-09,cat,Miau,FI,Helsinki,Finland,Europe
,,,,,,
2018-12-12,who,Hello,EN,Delhi,India,Asia
- 1. Wie füge ich eine leere Zeile zum DataGrid hinzu?
- 2. Wie füge ich eine leere Spalte zu einem Datenrahmen hinzu?
- 3. Wie füge ich eine Zeile über einem Balkendiagramm hinzu?
- 4. C#: Wie füge ich eine Zeile zu einem Memo hinzu?
- 5. Wie füge ich diesem Text eine weitere Zeile hinzu?
- 6. Wie füge ich mehr als eine Zeile mit Zend_Db hinzu?
- 7. Wie füge ich eine Zeile am Ende meiner Tabelle hinzu?
- 8. Wie füge ich eine benutzerdefinierte Überprüfungsregel hinzu?
- 9. Wie füge ich Firefox eine Schaltfläche hinzu?
- 10. Wie füge ich eine Logout-Funktion hinzu?
- 11. Wie füge ich zu jeder Zeile in MySQL hinzu?
- 12. Wie füge ich datetimepicker hinzu und füge zweiten hinzu?
- 13. Wie füge ich Multithreading hinzu?
- 14. Wie füge ich einer CSV-Datei eine neue Spalte hinzu?
- 15. Wie füge ich Dateien zu Jars hinzu META-INF
- 16. Wie füge ich mehrere application.properties Dateien im Spring-Boot hinzu?
- 17. Wie lösche ich die aktuelle Zeile und füge eine neue Zeile in Notepad ++ hinzu?
- 18. Wie füge ich einem UINavigation-Objekt eine Schaltfläche hinzu?
- 19. Wie füge ich Dateien zum Autostart-Ordner hinzu?
- 20. Wie füge ich Dateien zum Projekt bei Google Code hinzu?
- 21. Wie füge ich YAML-Dateien hinzu, vorzugsweise in Ruby
- 22. Wie füge ich einen Button zwischen Listenansicht hinzu?
- 23. Wie füge ich Padding zwischen Menüelementen in Android hinzu?
- 24. Wie füge ich ein Leerzeichen zwischen zwei verketteten NSStrings hinzu?
- 25. Wie füge ich Leerzeichen zwischen den Zeilen meiner ul hinzu?
- 26. Wie füge ich DataRow zu DataTable hinzu?
- 27. CMake: Wie füge ich eine benutzerdefinierte generische Kompilierungsregel hinzu?
- 28. ActionMailer - Wie füge ich einen Anhang hinzu?
- 29. Wie füge ich beim Herunterladen einer Datei eine Erweiterung hinzu?
- 30. Wie füge ich eine zusätzliche Spracheingabe zu Android hinzu?
Bitte stellen Sie sicher, dass Sie Ihren Code co formatieren Richtig, momentan ist der Einzug gebrochen, was in Python ein Show-Stopper ist. –
Mein Code funktioniert gut.Es ist nur die leere Zeile, die ich hinzufügen möchte. Nur weil Sie nicht denken, dass die Einrückung korrekt ist, bedeutet das, dass ich einen Downvote bekomme? – bonbon
Nicht weil ich denke, dass es falsch ist, sondern weil [es ist tatsächlich falsch] (https://ideone.com/yuQgvL). Die Funktion in Zeile 4 hat keinen Körper. Ausgehend von Zeile 5 haben Sie eine Einrückungsebene verloren. Vielleicht war es nur, als du deine Frage geschrieben hast, aber das ändert nichts daran, dass es falsch ist. Als solche fehlt diese Frage in der Qualität, und für mich sagt es, dass Sie nicht genug Mühe ausgegeben haben, es zu schreiben. Wenn sich das ändert, werde ich gerne meine Stimme neu bewerten. –