Como posso exportar uma lista de DataFrames para uma planilha do Excel?
Os documentos para o to_excel
estado:
Observações
Se passar um objeto ExcelWriter existente, a planilha será adicionada à pasta de trabalho existente. Isso pode ser usado para salvar diferentes DataFrames em uma pasta de trabalho
writer = ExcelWriter('output.xlsx')
df1.to_excel(writer, 'sheet1')
df2.to_excel(writer, 'sheet2')
writer.save()
Depois disso, pensei que poderia escrever uma função que salvasse uma lista de DataFrames em uma planilha da seguinte maneira:
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()
No entanto (com uma lista de dois pequenos DataFrames, cada um dos quais pode ser salvo to_excel
individualmente), uma exceção é levantada (Editar: traceback removido) :
AttributeError: 'str' object has no attribute 'worksheets'
Presumivelmente, não estou ligando ExcelWriter
corretamente. Como devo fazer para fazer isso?
ExcelWriter
como um gerenciador de contexto.with ExcelWriter(xls_path) as writer: df.to_excel(writer, sheet_name)
'sheet%s' % n
por favor? O que isso faz e como funciona?Caso alguém precise de um exemplo de como fazer isso com um dicionário 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 seperate page """ writer = ExcelWriter(path) for key in dict_df: dict_df[key].to_excel(writer, key) writer.save()
exemplo:
save_xls(dict_df = my_dict, path = '~/my_path.xls')
fonte
'%s' % key
faz? Você se importaria de explicar isso? Obrigado!Às vezes, pode haver problemas (escrever um arquivo Excel contendo Unicode), se houver algum tipo de caractere não compatível no quadro de dados. Para superá-lo, podemos usar o pacote ' xlsxwriter ' como no caso abaixo:
para o código abaixo:
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()
Recebi o erro como "IllegalCharacterError"
O código que funcionou:
%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()
fonte