当在循环中使用Excelwriter时,它保留先前循环中的工作表



我试图从数据框架列表创建多个Excel电子表格。每个excel电子表格都是基于一个已经存在的excel文件,然后我插入一个数据框和数据透视表作为新的工作表。每个Excel电子表格都有一个基于数据框数据生成的名称。

代码大致如下

wb = load_workbook('baseline excel file.xlsx')
for df in quad_df_list:
remediated_df = remdiation_function(df)
remediated_pt = remediated_df.pivot_table(yadda yadda)
#the month and year are the same in each dataframe
#source is the only value that's different
source = remediated_df['Source_ID'].value_counts().index[0]
output_name = 'remediation workbook {month} {year} {source}'.format(month = month, year = year, source = source}
#eg output_name = remediation workbook june 2021 A
with pd.ExcelWriter(output_name, engine='openpyxl') as writer:
#insert the base excel sheet
writer.book = wb
remediated_df.to_excel(writer, sheet_name='remediated data')
remediated_pt.to_excel(writer, sheet_name='remediated pivot table')

最终发生的是,每个迭代都包含在先前迭代中插入的数据框和数据透视表工作表。就好像writer每次迭代都在处理同一个文件一样。我不知道为什么或如何"清空"。

我将从更改文件的命名约定开始(通常,文件名中的空格确实令人头痛)。查看ExcelWriter的文档,默认模式是写入,而我认为您希望追加而不是覆盖文档。

最新更新