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

如何将DataFrame追加写入Excel文件而不覆盖原有数据

解决方案

前置依赖

首先确保你已经安装了openpyxl库,pandas默认的xlsxwriter引擎不支持追加写入Excel的操作,执行以下命令安装:
pip install openpyxl

场景1:追加数据到已有工作表(同Sheet末尾追加,不覆盖原有内容)

适用于需要把新DataFrame加到已有Sheet的最后一行的场景:

import pandas as pd
import os

file_path = r'C:\Users\user_name\Downloads\test.xlsx'
target_sheet = 'Sheet1' # 替换为你实际的工作表名称

if not os.path.exists(file_path):
    # 文件不存在时首次写入,保留表头
    df.to_excel(file_path, sheet_name=target_sheet, index=False)
else:
    # 读取原有工作表的内容
    old_data = pd.read_excel(file_path, sheet_name=target_sheet)
    # 拼接新旧数据,要求新旧DataFrame的列名、列顺序完全一致
    combined_data = pd.concat([old_data, df], ignore_index=True)
    # 写入拼接后的内容,替换原有工作表
    with pd.ExcelWriter(file_path, engine='openpyxl', mode='a', if_sheet_exists='replace') as writer:
        combined_data.to_excel(writer, sheet_name=target_sheet, index=False)

场景2:追加数据到新工作表(新增独立Sheet,不修改原有Sheet内容)

适用于需要把新DataFrame写入同一个Excel的新Sheet页的场景:

import pandas as pd

file_path = r'C:\Users\user_name\Downloads\test.xlsx'
new_sheet = 'Sheet2' # 替换为新Sheet的名称,不能和已有Sheet重名

with pd.ExcelWriter(file_path, engine='openpyxl', mode='a', if_sheet_exists='new') as writer:
    df.to_excel(writer, sheet_name=new_sheet, index=False)

常见注意事项

  • if_sheet_exists参数要求pandas版本≥1.4.0,如果你使用的是更低版本,可以先读取Excel内所有Sheet的内容,替换/新增对应Sheet后整体回写
  • 同Sheet追加时请确保新DataFrame的列名、列顺序和原有数据完全一致,否则会出现列错位、空列的问题
  • 写入时如果不需要保留pandas的默认索引列,建议加上index=False参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:15:00