You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将for循环生成的每个DataFrame保存至同一Excel文件的不同工作表?

问题原因

你每次调用PP.to_excel()时,默认会创建新的Excel文件并覆盖旧版本,所以最终仅保留最后一次循环生成的工作表。

解决方案:使用ExcelWriter(推荐)

要在同一个文件中写入多个工作表,需要用pandas.ExcelWriter对象统一管理写入流程,它会暂存所有工作表内容,最后一次性写入文件,避免覆盖问题。

修改后的代码如下:

import numpy as np
import pandas as pd

# 创建ExcelWriter对象,指定输出文件路径
with pd.ExcelWriter('File.xlsx') as writer:
    for r in range(10):
        Matrix = np.empty((1000, 317))
        # 保留你的矩阵填充逻辑
        for i in range(1000):
            for j in range(317):
                # 这里写你的if-else填充代码
                # 示例:Matrix[i][j] = i + j
                pass
        
        PP = pd.DataFrame(Matrix)
        # 将当前DataFrame写入指定工作表,关联writer对象
        PP.to_excel(writer, sheet_name=f'Sheet{r+1}', header=False, index=False)
# with块结束后会自动关闭writer并保存所有工作表

关键说明

  • with pd.ExcelWriter(...)是上下文管理器,会自动处理文件的打开与关闭,避免手动操作出错。
  • 每次to_excel指定writer参数,就能将工作表追加到同一文件,而非覆盖原有内容。
备选方案:追加模式(不推荐用于大量循环)

若不想使用ExcelWriter,也可在to_excel中指定mode='a'(追加模式),但该方法每次需重新读取已有文件,效率较低,适合循环次数少或矩阵较小的场景:

import numpy as np
import pandas as pd

for r in range(10):
    Matrix = np.empty((1000, 317))
    # 保留你的矩阵填充逻辑
    for i in range(1000):
        for j in range(317):
            pass
    
    PP = pd.DataFrame(Matrix)
    # 追加模式写入,if_sheet_exists处理同名工作表(可选replace/new/error)
    PP.to_excel('File.xlsx', sheet_name=f'Sheet{r+1}', header=False, index=False, mode='a', if_sheet_exists='replace')

注意

  • mode='a'要求pandas版本≥1.4.0。
  • if_sheet_exists参数:'replace'覆盖同名表,'new'自动重命名,'error'抛出异常。

内容的提问来源于stack exchange,提问作者suyinar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 03:31:12