[PYTHON] Speichern Sie pandas.DataFrame per Blatt in Excel

Ich habe Probleme mit pd.to_excel ...

Ich analysiere derzeit den Aktienkurs und verwende zu diesem Zeitpunkt einen Datenrahmen. Nach der Analyse unter verschiedenen Bedingungen dachte ich jedoch, es wäre besser, sie als Excel-Datei zu speichern, wenn ich sie anderen erkläre. Wenn ich jedoch versuche, pandas to_excel zu verwenden, erhalte ich neue Daten. Wenn Sie es schreiben möchten, wird es überschrieben. Das war ein Problem ...

Nach vielen Recherchen habe ich festgestellt, dass es gespeichert werden kann, ohne überschrieben zu werden, indem es mit [openpyxl] kombiniert wird (https://openpyxl.readthedocs.io/en/stable/tutorial.html, "openpyxl"). Daher möchte ich den Code als Memorandum behalten.

Die Versionen der verwendeten Pakete sind wie folgt.

Python 3.7 Pandas 0.25.1 openpyxl 3.0.0

Speichern, um zu übertreffen

In neuer Arbeitsmappe oder Arbeitsblatt speichern

Verwenden Sie in diesem Fall to_excel von pandas.

to_excel.py


import pandas as pd

with pd.ExcelWriter(file_path) as writer:
    df.to_excel(writer, sheet_name=sheet_name)

Überschreiben Sie vorhandene Arbeitsmappen und Arbeitsblätter

Verwenden Sie in diesem Fall openpyxl, um es zu überschreiben.

to_excel.py


import openpyxl
from openpyxl.utils.dataframe import dataframe_to_rows


wb = openpyxl.load_workbook(file_path)

ws = wb[sheet_name]

for i, r in enumerate(dataframe_to_rows(df, header=False)):
    if i == 0:
        continue
    ws.append(r)
wb.save(file_path)

Als neues Blatt in einer vorhandenen Arbeitsmappe speichern

Dieser Teil ist das Herzstück dieses Artikels, und ich habe ihn untersucht ...

to_excel.py


import openpyxl
from openpyxl.utils.dataframe import dataframe_to_rows


wb = openpyxl.load_workbook(file_path)

ws = wb.create_sheet(title=sheet_name)
ws.append(['Date', 'Open', 'Close', 'High', 'Low'])

for i, r in enumerate(dataframe_to_rows(df, header=False)):
    if i == 0:
        continue
    ws.append(r)
wb.save(file_path)

Zusammenfassung

Das obige ist, wie man jedes schreibt. Ich selbst habe den zweiten und dritten mit try-without geschrieben, aber vielleicht gibt es auch eine leicht verständliche Möglichkeit, die if-Anweisung zu unterteilen ...

Wenn ich einen neuen Weg finde, werde ich ihn hinzufügen und in einen neuen Artikel schreiben! Dann!

Recommended Posts

Speichern Sie pandas.DataFrame per Blatt in Excel
Funktion zum Speichern von Bildern nach Datum [python3]
Konvertieren Sie mehrere CSVs in jede Excel-Tabelle
Jenkins ist weiterhin sicher zu bedienen! Referenzseite * [Zusammenfassung der Java-Unterstützung - Qiita] (https://qiita.com/nowokay/items/edb5c5df4dbfc4a99ffb "Zusammenfassung der Java-Unterstützung - Qiita") * [Offizielle Java 11-Version dieser Version Gegen eine Gebühr Unterstützung für das Oracle JDK. Die Erwartungen an kostenlosen langfristigen Support durch OpenJDK sind derzeit gering - Publickey] (https://www.publickey1.jp/blog/18/java_11oracle_jdkopenjdk.html "Die offizielle Java 11-Version wurde veröffentlicht. Der Support für Oracle JDK wird ab dieser Version bezahlt Es wird derzeit nicht erwartet, dass OpenJDK langfristig kostenlos unterstützt wird - Publickey ") Java, Jenkins, OpenJDK, Java8, Java11 Das Ranking der Ansichtsanzahl von Spotify wird aggregiert und in Excel gespeichert
Speichern Sie das von pyqtgraph gezeichnete Diagramm in einem Bild
So speichern Sie eine von Python gekratzte Tabelle in CSV
Konvertieren Sie json in Excel
Ich möchte die von LINE an S3 gesendeten Fotos speichern
Exportieren Sie den Pandas-Datenrahmen nach Excel
Lesen Sie die Excel-Tabelle und wiederholen Sie den Prozess zeilenweise Python VBA
[Good By Excel] Python-Skript zum Generieren von SQL zum Konvertieren von CSV in Tabelle