pandas写入Excel新建工作表时保留原有工作表的代码修正方法
故障原因
pandas.DataFrame.to_excel默认采用覆盖写入模式,直接对原文件路径执行写入操作时,会清空整个Excel文件内的所有原有内容,仅保留本次写入的"New Sheet"工作表,这就是原有"Old Sheet"丢失的根本原因。
修正代码
通过追加模式写入新工作表即可保留所有原有sheet,追加写入xlsx格式需要依赖openpyxl引擎,修正后代码如下:
import pandas as pd from openpyxl import load_workbook file_source = r'C:\Users\user\Desktop\Data.xlsx' target_cols = ['iso2', 'cnum', 'country'] # 读取Old Sheet中需要复制的三列数据 copy_data = pd.read_excel(file_source, sheet_name="Old Sheet", usecols=target_cols) # 以追加模式打开Excel文件,写入新工作表 with pd.ExcelWriter( file_source, mode='a', engine='openpyxl', if_sheet_exists='replace' ) as writer: copy_data.to_excel(writer, sheet_name="New Sheet", index=False)
参数说明
mode='a':设置为追加写入模式,不会覆盖文件内原有工作表engine='openpyxl':指定操作xlsx文件的操作引擎,pandas默认写入引擎不支持xlsx格式的追加写入操作if_sheet_exists='replace':如果文件中已经存在同名的"New Sheet",直接替换其内容;如果不需要覆盖已有sheet,可将该参数改为'error'(存在同名sheet时直接抛出报错)或'new'(自动生成新的sheet名完成写入)
内容的提问来源于stack exchange,提问作者CanaryTheBird
相关产品推荐
相关产品推荐

