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')
我有一个嵌套的 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')