Comment enregistrer une nouvelle feuille dans un fichier Excel existant, en utilisant Pandas?
Je veux utiliser des fichiers excel pour stocker des données élaborées avec python. Mon problème est que je ne peux pas ajouter des fiches à un fichier excel. Ici je vous propose un exemple de code pour les travaux afin de parvenir à cette question
import pandas as pd
import numpy as np
path = r"C:\Users\fedel\Desktop\excelData\PhD_data.xlsx"
x1 = np.random.randn(100, 2)
df1 = pd.DataFrame(x1)
x2 = np.random.randn(100, 2)
df2 = pd.DataFrame(x2)
writer = pd.ExcelWriter(path, engine = 'xlsxwriter')
df1.to_excel(writer, sheet_name = 'x1')
df2.to_excel(writer, sheet_name = 'x2')
writer.save()
writer.close()
Ce code permet d'économiser deux DataFrames à deux feuilles, nommé "x1" et "x2", respectivement. Si j'ai créer deux nouveaux DataFrames et essayez d'utiliser le même code pour ajouter deux nouvelles feuilles, 'x3' et 'x4', les données d'origine est perdue.
import pandas as pd
import numpy as np
path = r"C:\Users\fedel\Desktop\excelData\PhD_data.xlsx"
x3 = np.random.randn(100, 2)
df3 = pd.DataFrame(x3)
x4 = np.random.randn(100, 2)
df4 = pd.DataFrame(x4)
writer = pd.ExcelWriter(path, engine = 'xlsxwriter')
df3.to_excel(writer, sheet_name = 'x3')
df4.to_excel(writer, sheet_name = 'x4')
writer.save()
writer.close()
Je veux un fichier excel avec quatre feuilles: 'x1', 'x2', 'x3', 'x4'.
Je sais que "xlsxwriter" n'est pas le seul "moteur", il est "openpyxl'. J'ai aussi vu qu'il y a déjà d'autres personnes qui ont écrit sur cette question, mais je ne peux pas comprendre comment le faire.
Ici un code à partir de ce lien
import pandas
from openpyxl import load_workbook
book = load_workbook('Masterfile.xlsx')
writer = pandas.ExcelWriter('Masterfile.xlsx', engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
data_filtered.to_excel(writer, "Main", cols=['Diff1', 'Diff2'])
writer.save()
Ils disent que cela fonctionne, mais il est difficile de comprendre comment. Je ne comprends pas ce que "ws.titre", "ws", et "dict" sont dans ce contexte.
Qui est le meilleur moyen d'économiser de "x1" et "x2", puis fermez le fichier, l'ouvrir à nouveau et ajouter "x3" et "x4"?
source d'informationauteur Stefano Fedele
Vous devez vous connecter pour publier un commentaire.
Merci. Je crois qu'un exemple pourrait être bon pour quelqu'un d'autre a la un problème:
Ici, je générer un fichier excel, à partir de ma compréhension, il n'a pas vraiment d'importance si elle est générée par la "xslxwriter" ou la "openpyxl" du moteur.
Quand je veux écrire, sans perdre les données d'origine puis
ce code ne le travail!
Dans l'exemple que vous avez partagé vous chargez le fichier existant dans
book
et le réglage de lawriter.book
de la valeur de labook
. Dans la ligne dewriter.sheets = dict((ws.title, ws) for ws in book.worksheets)
vous accédez à chaque feuille dans le classeur en tant quews
. Le titre de la fiche est ensuitews
donc, vous êtes à la création d'un dictionnaire de{sheet_titles: sheet}
clé, des paires de valeurs. Ce dictionnaire est alors définie à l'écrivain.les draps. Essentiellement, ces mesures sont tout de chargement de données existantes à partir de'Masterfile.xlsx'
et le remplissage de votre écrivain avec eux.Maintenant, disons que vous avez déjà un fichier avec
x1
etx2
que les feuilles. Vous pouvez utiliser l'exemple de code pour charger le fichier et pourrait faire quelque chose comme ceci pour ajouterx3
etx4
.Qui devrait faire ce que vous cherchez.
Je vous recommandons fortement de travailler directement avec les openpyxl car il prend désormais en charge les Pandas DataFrames.
Cela permet de vous concentrer sur l'Excel et les Pandas code.
Un exemple simple pour l'écriture de plusieurs données vers excel à un moment. Et aussi quand vous voulez pour ajouter les données à une feuille sur un écrit de fichier excel (fermé fichier excel).
Quand c'est votre première fois à la rédaction d'un document excel. (L'écriture "df1" et "df2" à "1st_sheet" et "2nd_sheet")
Après la fermeture de votre excel, mais vous souhaitez ajouter des données sur le même fichier excel, mais une autre feuille, disons-le, "df3" nom de la feuille "3rd_sheet".
Noter que le format excel ne doit pas être xls, vous pouvez utiliser xlsx.