Pandas ExcelWriter 使用 for 循环覆盖工作表

Pandas ExcelWriter overwriting sheets using for loop

我有一个嵌套的 for 循环,它从具有多个 sheet 的主文件中获取数据,并按用户为每个 sheet 拆分数据。然后我想将每个用户数据写入他们自己的文件,与主文件具有相同的 sheets。

这是我目前的情况:

tm_sheet_to_df_map = pd.read_excel(src_file_tm, sheet_name=None)

for key, value in sorted(tm_sheet_to_df_map.items(),reverse=True):           
    tm_group = value.groupby('TM')
    for TM, group_df in tm_group:
        attachment = attachment_path_tm / f'{TM}' / f'Q221 New Accounts - {TM}.xlsx'
        attachment1 = os.makedirs(os.path.dirname(attachment), exist_ok=True)
        writer = ExcelWriter(attachment, engine = 'xlsxwriter')
        group_df.to_excel(writer, sheet_name =f'{key}', index=False)
        writer.save()

问题 - 上面的脚本为每个用户创建一个新文件,但只会将最终数据帧写入每个文件,而不是添加所有 sheets主文件。任何想法如何将每个 sheet 写入单个文件?我试过移动 writer.save() 在循环外没有运气。

您需要 ExcelWriter 的“追加”模式:


try:
    # append mode will fail if file does not exist
    writer = ExcelWriter(attachment, engine = 'openpyxl', mode="a")
except FileNotFoundError:
    writer = ExcelWriter(attachment, engine = 'openpyxl')

ExcelWriter docs