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
相关产品推荐
相关产品推荐

