development

데이터 프레임 목록을 다중 시트 Excel 스프레드 시트에 저장

big-blog 2020. 11. 8. 10:33
반응형

데이터 프레임 목록을 다중 시트 Excel 스프레드 시트에 저장


DataFrame 목록을 하나의 Excel 스프레드 시트로 내보내려면 어떻게해야합니까? 상태
문서 to_excel:

참고
기존 ExcelWriter 개체를 전달하면 시트가 기존 통합 문서에 추가됩니다. 하나의 통합 문서에 다른 DataFrame을 저장하는 데 사용할 수 있습니다.

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

이에 따라 다음과 같이 DataFrame 목록을 하나의 스프레드 시트에 저장하는 함수를 작성할 수 있다고 생각했습니다.

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()

그러나 (각각 to_excel개별적으로 저장할 수있는 두 개의 작은 DataFrame 목록이 있는 경우) 예외가 발생합니다 (Edit : traceback removed) .

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

아마도 내가 ExcelWriter제대로 전화를 걸지 않은 것 같습니다. 어떻게해야합니까?


pandas 자체 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()

누군가가 데이터 프레임 사전으로이를 수행하는 방법에 대한 예제가 필요한 경우 :

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')

참고 URL : https://stackoverflow.com/questions/14225676/save-list-of-dataframes-to-multisheet-excel-spreadsheet

반응형