Mit Pandas in vorhandene Excel-Dateien schreiben, ohne Daten zu überschreiben
Beim Hinzufügen neuer Daten zu einer vorhandenen Excel-Datei mit Pandas ist das Standardverhalten damit die neuen Daten alle vorhandenen Inhalte überschreiben. Dies kann problematisch sein, wenn Sie die vorhandenen Daten auf anderen Blättern beibehalten möchten.
Das Problem
Bedenken Sie den folgenden Code:
import pandas writer = pandas.ExcelWriter('Masterfile.xlsx') data_filtered.to_excel(writer, "Main", cols=['Diff1', 'Diff2']) writer.save()
Wenn dieser Code ausgeführt wird, werden die Daten in data_filtered zu einem neuen Blatt mit dem Namen „Main“ in der Excel-Datei Masterfile.xlsx hinzugefügt. Es werden jedoch auch alle anderen Blätter in der Datei gelöscht.
Die Lösung
Um das Überschreiben vorhandener Daten zu vermeiden, können Sie die Engine verwenden ='openpyxl'-Option in ExcelWriter. Dadurch können Sie auf das zugrunde liegende openpyxl-Objekt zugreifen, was mehr Kontrolle über den Prozess gibt.
So ändern Sie den obigen Code, um ihn an eine vorhandene Excel-Datei anzuhängen, ohne ihn zu überschreiben:
import pandas from openpyxl import load_workbook book = load_workbook('Masterfile.xlsx') writer = pandas.ExcelWriter('Masterfile.xlsx', engine='openpyxl') writer.book = book ## ExcelWriter for some reason uses writer.sheets to access the sheet. ## If you leave it empty it will not know that sheet Main is already there ## and will create a new sheet. writer.sheets = dict((ws.title, ws) for ws in book.worksheets) data_filtered.to_excel(writer, "Main", cols=['Diff1', 'Diff2']) writer.save()
Von Indem wir write.sheets explizit auf ein Wörterbuch bestehender Blätter festlegen, stellen wir sicher, dass ExcelWriter die vorhandenen Blätter kennt und sie nicht überschreibt.
Das obige ist der detaillierte Inhalt vonWie füge ich Daten mithilfe von Pandas an eine vorhandene Excel-Datei an, ohne sie zu überschreiben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!