Сохранить список DataFrames для многостраничной таблицы Excel
Как я могу экспортировать список DataFrames в одну таблицу Excel?
Документы для to_excel
:
Примечания
Если передать существующий объект ExcelWriter, тогда будет добавлен лист к существующей книге. Это можно использовать для сохранения различных DataFrames в одну книгу
writer = ExcelWriter('output.xlsx')
df1.to_excel(writer, 'sheet1')
df2.to_excel(writer, 'sheet2')
writer.save()
После этого я решил написать функцию, которая сохраняет список DataFrames в одну таблицу следующим образом:
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()
Однако (со списком двух небольших DataFrames, каждый из которых может сохранять to_excel
отдельно), создается исключение (Edit: traceback removed):
AttributeError: 'str' object has no attribute 'worksheets'
Предположительно, я не правильно называю ExcelWriter
, как я должен быть для этого?
Ответы
Ответ 1
Вы должны использовать собственный класс ExcelWriter
панд:
from pandas import ExcelWriter
# from pandas.io.parsers import ExcelWriter
Тогда функция save_xls
работает как положено:
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)
writer.save()
Ответ 2
На случай, если кому-то понадобится пример того, как сделать это с помощью словаря данных:
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()
пример: save_xls(dict_df = my_dict, path = '~/my_path.xls')