Python将数据框附加到现有的Excel文件和工作表

dkc*_*ud9 9 python excel pandas openpyxl

我有一个关于将数据框附加到现有文件的现有工作表的问题。

我尝试自己写代码

writer = pd.ExcelWriter('existingFile.xlsx', engine='openpyxl', mode='a')
df.to_excel(writer, sheet_name="existingSheet", startrow=writer.sheets["existingSheet"].max_row, index=False, header=False)
Run Code Online (Sandbox Code Playgroud)

这会导致错误

ValueError:工作表“existingSheet”已存在,并且 if_sheet_exists 设置为“错误”。

我用谷歌搜索并在这里找到了这个功能;

使用 python pandas 将新数据框附加到现有 Excel 工作表

即使使用这个函数,它仍然会导致相同的错误,即使我认为这个函数可以防止我所认为的这个确切错误。

能否请你帮忙?

非常感谢!

Mik*_*ikk 11

我想我参加聚会迟到了但是

if_sheet_exists='replace'像这样向 ExcelWriter添加关键字

pd.ExcelWriter('existingFile.xlsx', engine='openpyxl', mode='a', if_sheet_exists='replace' )
Run Code Online (Sandbox Code Playgroud)

然后就可以使用最新版本的pandas了

  • 对我来说,这会覆盖工作表中的“(替换)内容”。它不附加。 (4认同)

Mat*_*eau 10

Pandas 1.4开始,还有一个'overlay'选项if_sheet_exists


Kuh*_*xel 6

看来这个功能在 pandas 1.3.0 中被破坏了,看看这个文档,当尝试附加到现有工作表时,它要么引发错误,要么创建一个新工作表,要么替换它

\n
\n

if_sheet_exists{\xe2\x80\x98error\xe2\x80\x99, \xe2\x80\x98new\xe2\x80\x99, \xe2\x80\x98replace\xe2\x80\x99}, 默认 \xe2\x80\x98error\ xe2\x80\x99 尝试写入已存在的工作表时\n如何表现(仅限追加\n模式)。

\n

错误:引发 ValueError。

\n

new:创建一个新工作表,名称由引擎确定。

\n

替换:在写入之前删除工作表的内容。

\n

1.3.0版本新增

\n
\n

唯一的解决方案是降级 pandas (1.2.3 对我有用)

\n
pip install pandas==1.2.3\n
Run Code Online (Sandbox Code Playgroud)\n