source

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

lovecheck 2023. 8. 30. 21:47
반응형

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

데이터 프레임 목록을 하나의 Excel 스프레드시트로 내보내려면 어떻게 해야 합니까?
상태에 대한 문서:

메모들
기존 ExcelWriter 개체를 전달하는 경우 시트가 기존 워크북에 추가됩니다.이 기능을 사용하여 서로 다른 데이터 프레임을 하나의 워크북에 저장할 수 있습니다.

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

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

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개별적으로) 예외가 발생합니다(편집: 트레이스백 제거됨).

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

제가 전화를 잘못 걸었을 수도 있는데, 어떻게 해야 하나요?

당신은 판다를 사용해야 합니다.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)

데이터 프레임 사전을 사용하여 예제가 필요한 경우:

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.keys():
        dict_df[key].to_excel(writer, sheet_name=key)

    writer.save()

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

데이터 프레임에 지원되지 않는 문자 유형이 있는 경우 문제(유니코드가 포함된 Excel 파일 작성)가 발생할 수 있습니다.이를 극복하기 위해 아래와 같이 'xlsxwriter' 패키지를 사용할 수 있습니다.

아래 코드의 경우:

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

"불법 문자 오류"라는 오류가 발생했습니다.

작동한 코드:

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

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

반응형