将 n 个不同的数据帧导出到一个 xlsx 文件的单独工作表中

问题描述 投票:0回答:2

我有一个 for 循环,它处理多个不同的数据帧,我试图将这些数据帧导出到一个 .xlsx 文件中,但在单独的工作表中。数据帧列为 dfs[i],相应的工作表名称为 sn[i]。

save_file
是从 tkinter
asksaveasfilename
获得的。

在下面的循环中,我尝试将数据帧导出到 Excel 工作表选项卡,但我只得到一个选项卡,其中列表中包含最终数据帧:

for i in range(len(dfs)):

    writer = pd.ExcelWriter(save_file.get(), engine = 'xlsxwriter')
    dfs[i].to_excel(writer, sheet_name = sn[i], index=False)
    writer.close()

同样,我尝试过这个命令,得到了相同的结果:

for i in range(len(dfs)):
     with pd.ExcelWriter(save_file.get()) as writer:
          dfs[i].to_excel(writer, sheet_name = sn[i], index=False)

当我在 for 循环中测试了

print(dfs[i])
print(sn[i])
时,它的显示完全按照预期,但我很困惑为什么只有列表中的最后一个元素导出到 Excel。任何帮助将不胜感激,谢谢!

python pandas excel for-loop
2个回答
0
投票

你尝试过这个吗?

with pd.ExcelWriter(file_name) as writer:
       for i in range(len(dfs)):
              dfs[i].to_excel(writer, sheet_name = sn[i], index=False)

0
投票

试试这个:

 for i in range(len(dfs)):
    if not os.path.exists(save_file.get()):
        with ExcelWriter(save_file.get(), engine="openpyxl", mode="w") as writer:
            dfs[i].to_excel(writer, sheet_name=sn[i])
    with ExcelWriter(save_file.get(), engine="openpyxl", mode="a", if_sheet_exists="replace") as writer:
        dfs[i].to_excel(writer, sheet_name=sn[i])
© www.soinside.com 2019 - 2024. All rights reserved.