132 votes

Sauvegarder la liste des DataFrames dans une feuille de calcul Excel multi-feuillets

Comment puis-je exporter une liste de DataFrames dans une feuille de calcul Excel ?
Les documents relatifs à to_excel l'État :

Notas
Si vous passez un objet ExcelWriter existant, la feuille sera ajoutée au classeur existant. au classeur existant. Ceci peut être utilisé pour enregistrer différentes DataFrames dans un classeur

writer = ExcelWriter('output.xlsx')
df1.to_excel(writer, 'sheet1')
df2.to_excel(writer, 'sheet2')
writer.save()

Suite à cela, j'ai pensé que je pouvais écrire une fonction qui enregistre une liste de DataFrames dans une feuille de calcul comme suit :

from openpyxl.writer.excel import ExcelWriter
def save_xls(list_dfs, xls_path):
    writer = ExcelWriter(xls_path)
    for n, df in enumerate(list_dfs):
        df.to_excel(writer,'sheet%s' % n)
    writer.save()

Cependant (avec une liste de deux petits DataFrames, chacun pouvant enregistrer to_excel individuellement), une exception est levée (Edit : traceback supprimé) :

AttributeError: 'str' object has no attribute 'worksheets'

Vraisemblablement, je n'appelle pas ExcelWriter correctement, comment dois-je être pour faire cela ?

184voto

Andy Hayden Points 38010

Vous devriez utiliser les propres pandas ExcelWriter classe :

from pandas import ExcelWriter
# from pandas.io.parsers import ExcelWriter

Ensuite, le save_xls fonctionne comme prévu :

def save_xls(list_dfs, xls_path):
    with ExcelWriter(xls_path) as writer:
        for n, df in enumerate(list_dfs):
            df.to_excel(writer,'sheet%s' % n)

40voto

Jared Marks Points 330

Au cas où quelqu'un aurait besoin d'un exemple utilisant un dictionnaire de dataframes :

from pandas import ExcelWriter

def save_xls(dict_df, path):
"""
Save a dictionary of dataframes to an excel file, with each dataframe as a separate page
"""

    writer = ExcelWriter(path)
    for key in dict_df:
        dict_df[key].to_excel(writer, key)

    writer.save()

exemple : save_xls(dict_df = my_dict, path = '~/my_path.xls')

1voto

Anil Kumar Points 348

Parfois, il peut y avoir des problèmes (écriture d'un fichier Excel contenant de l'unicode), s'il y a un type de caractère non supporté dans le cadre de données. Pour résoudre ce problème, nous pouvons utiliser ' xlsxwriter comme dans le cas ci-dessous :

pour le code ci-dessous :

from pandas import ExcelWriter
import xlsxwriter
writer = ExcelWriter('notes.xlsx')
for key in dict_df:
        data[key].to_excel(writer, key,index=False)
writer.save()

J'ai obtenu l'erreur "IllegalCharacterError".

Le code qui a fonctionné :

%pip install xlsxwriter
from pandas import ExcelWriter
import xlsxwriter
writer = ExcelWriter('notes.xlsx')
for key in dict_df:
        data[key].to_excel(writer, key,index=False,engine='xlsxwriter')
writer.save()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X