Python ExcelWriter嵌套循环创建多页工作簿



我写了一些代码,在目录中的.csv文件中循环,只获取特定机构名称的行==,然后输出一个工作簿,其中包含该机构的多张工作表,目录中的每个文件一张工作表。此代码运行良好,如下方所示

agency_name = 'Example Agency'
writer = pd.ExcelWriter(f'path/{agency_name } HoH Errors 2022.xlsx', engine='xlsxwriter')
for filename in os.listdir(input_directory):
p = os.path.join(input_directory,filename)
df = pd.read_csv(p)
df = df[df['Agency Name'] == agency_name]
if df.empty == True:
continue
df.to_excel(writer,filename.replace('.csv',''), index=False)
writer.save()

我的问题是,当我试图将此代码嵌套到另一个遍历数百个机构的for循环中时,工作簿会以正确的名称保存到正确的目录中,但它们都是空的——没有任何数据保存到工作簿中。这是代码

agency_name = pd.DataFrame(data = {'Agency Name':['Example 1','Example 2','Example 3']})
for i in range(len(agency_name)):
writer = pd.ExcelWriter(f"path/{agency_name.iloc[i,0]} HoH Errors 2022.xlsx", engine='xlsxwriter')
for filename in os.listdir(input_directory):
p = os.path.join(input_directory,filename)
df = pd.read_csv(p)
df = df[df['Agency Name'] == agency_name.iloc[i,0]]
if df.empty == True:
continue
df.to_excel(writer,filename.replace('.csv',''), index=False)
writer.save()

在进行故障排除时,我发现循环仍在生成更正的dfs,问题是这些dfs没有作为工作表保存到工作簿中。同样,工作簿以正确的名称保存在正确的位置,但它们都不包含任何数据。有人有什么指导吗?我没有广泛使用ExcelWriter。谢谢

我能够通过添加以下行来解决问题:

if df.empty == True:
if filename == 'Last_File_in_Directory.csv':
writer.save()
continue
else:
continue

按照目前的情况,如果目录中的最后一个文件没有任何与机构匹配的记录,那么该文件就不会保存/关闭。

最新更新