Enregistrer pandas.DataFrame dans Excel par feuille

J'ai des problèmes avec pd.to_excel ...

J'analyse actuellement le cours de l'action et j'utilise un dataframe à ce moment-là. Cependant, après avoir analysé dans diverses conditions, j'ai pensé qu'il serait préférable de l'enregistrer sous forme de fichier Excel lors de l'explication à d'autres. Cependant, lorsque j'essaye d'utiliser [to_excel] de pandas (https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_excel.html, "to_excel"), j'obtiens de nouvelles données. Si vous souhaitez l'écrire, il sera écrasé. C'était un problème ...

Après de nombreuses recherches, j'ai trouvé qu'il pouvait être sauvegardé sans être écrasé en le combinant avec openpyxl. J'aimerais donc garder le code sous forme de mémorandum.

Les versions des packages utilisés sont les suivantes.

Python 3.7 Pandas 0.25.1 openpyxl 3.0.0

Enregistrer pour exceller

Enregistrer dans un nouveau classeur ou une nouvelle feuille de calcul

Dans ce cas, utilisez to_excel de pandas.

to_excel.py


import pandas as pd

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

Écraser les classeurs et les feuilles de calcul existants

Dans ce cas, utilisez openpyxl pour l'écraser.

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)

Enregistrer en tant que nouvelle feuille dans un classeur existant

Cette partie est au cœur de cet article, et je l'ai recherchée ...

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)

Résumé

Ce qui précède est de savoir comment écrire chacun. J'ai moi-même écrit le deuxième et le troisième avec try-except, mais il y a peut-être aussi un moyen facile à comprendre de diviser l'instruction if ...

Si je trouve un nouveau moyen, je vais l'ajouter et l'écrire dans un nouvel article! Puis!

Recommended Posts

Enregistrer pandas.DataFrame dans Excel par feuille
Fonction pour enregistrer les images par date [python3]
Convertir plusieurs CSV en chaque feuille Excel
Agréger le classement des vues Spotify et enregistrer dans Excel
Enregistrer le graphique dessiné par pyqtgraph dans une image
Comment enregistrer une table récupérée par python en csv
Convertir json en Excel
Je souhaite enregistrer les photos envoyées par LINE vers S3
Exporter la trame de données pandas vers Excel
Lire la feuille Excel et le processus en boucle ligne par ligne Python VBA
[Good By Excel] script python pour générer sql pour convertir csv en table