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

Python Pandas导出DataFrame时如何追加数据至Excel而非覆盖

解决Pandas追加DataFrame到Excel同一工作表的问题

要实现将新数据追加到Excel文件的"PG"工作表已有数据下方,且保留列名一致,需要修改原有代码的写入逻辑——因为xlsxwriter引擎不支持追加已有文件,改用openpyxl引擎,并结合文件存在性判断来处理:

完整修改代码

import pandas as pd
import os

file_path = "C:/Users/Home/Desktop/New/"
full_file_path = file_path + "List.xlsx"

# 构建新数据的DataFrame(简化原有代码,无需重复转换)
df = pd.DataFrame({
    'Name': fullname,
    'Adr': addr,
    'F_Name': f_name
})

# 判断文件是否存在,分情况处理
if os.path.exists(full_file_path):
    # 读取原有数据
    existing_df = pd.read_excel(full_file_path, sheet_name='PG')
    # 检查列名是否一致,避免合并出错
    if list(existing_df.columns) == list(df.columns):
        # 合并新旧数据,重置索引
        combined_df = pd.concat([existing_df, df], ignore_index=True)
        # 写入合并后的数据
        with pd.ExcelWriter(full_file_path, engine='openpyxl', mode='a', if_sheet_exists='replace') as writer:
            combined_df.to_excel(writer, sheet_name='PG', index=False)
    else:
        raise ValueError("新数据列名与原有数据列名不一致,无法追加")
else:
    # 文件不存在时直接写入
    with pd.ExcelWriter(full_file_path, engine='openpyxl') as writer:
        df.to_excel(writer, sheet_name='PG', index=False)

关键说明

  • 引擎选择:使用openpyxl而非xlsxwriter,因为前者支持读写已存在的Excel文件,后者仅支持创建新文件
  • 文件存在性判断:通过os.path.exists判断目标文件是否存在,决定是读取合并还是直接写入
  • 列名校验:新增列名一致性检查,避免因列名不匹配导致的追加错误
  • 追加逻辑:文件存在时,用pd.concat合并新旧数据,再通过mode='a'和if_sheet_exists='replace'覆盖原有工作表(直接追加会导致表头重复,合并后替换是更稳妥的方式)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 19:22:12