Pandas to_excel覆盖Excel已有内容,如何实现追加写入?
解决Pandas向Excel追加内容而非覆盖的问题
执行以下代码时:
df = pd.DataFrame(df) df.to_excel("Lista FATF.xlsx", index=False, startrow=1)原有Excel文件中的全部内容会被清空,需要实现仅向该Excel文件追加内容而非覆盖原有内容。
方法1:用ExcelWriter追加模式(推荐)
Pandas默认的to_excel会直接覆盖文件,要实现追加,得用pd.ExcelWriter指定追加模式,同时依赖openpyxl引擎(它支持对现有Excel文件的修改)。
示例代码:
import pandas as pd from openpyxl import load_workbook # 假设df是你要追加的目标DataFrame # df = pd.DataFrame(...) # 以追加模式打开Excel文件 with pd.ExcelWriter("Lista FATF.xlsx", mode="a", engine="openpyxl", if_sheet_exists="overlay") as writer: # 获取现有工作表的总行数,确定追加起始位置 book = load_workbook("Lista FATF.xlsx") startrow = book.active.max_row # 追加数据,不重复写表头(如果原有文件已有表头) df.to_excel(writer, index=False, header=False, startrow=startrow)
if_sheet_exists="overlay":指定在已有工作表上追加,不会新建工作表startrow:设置为现有内容的下一行,避免覆盖原有数据- 如果需要保留表头,去掉
header=False,但要注意不要重复写入表头
方法2:合并原有数据后写入
如果不想依赖特定引擎,也可以先读取原有Excel的内容,和新数据合并后再整体写入:
import pandas as pd # 读取原有数据,处理文件不存在的情况 try: existing_df = pd.read_excel("Lista FATF.xlsx") combined_df = pd.concat([existing_df, df], ignore_index=True) except FileNotFoundError: combined_df = df # 写入合并后的数据 combined_df.to_excel("Lista FATF.xlsx", index=False)
这种方法适合数据量较小的场景,不用考虑引擎兼容性,但需要额外读取原有数据,效率略低。
内容的提问来源于stack exchange,提问作者Sávio Carvalho
相关产品推荐
相关产品推荐

