新版本pandas,向Excel追加sheet

背景:

根据这位大佬的方法,向Excel追加sheet时,遇到报错AttributeError: can't set attribute

Pandas 写入 Excel 的几种情形与方式,覆盖,新增,追加,对齐_pandas 写入excel_小玉的小本本的博客-CSDN博客
原方法如下:

from openpyxl import load_workbook

s1 = pd.DataFrame(np.array([['s1', 's1', 's1', 's1']]), columns=['a', 'b', 'c', 'd'])
s2 = pd.DataFrame(np.array([['s2', 's2', 's2', 's2']]), columns=['a', 'b', 'c', 'd'])
s1.to_excel('test.xlsx', sheet_name='111', index=False)
book = load_workbook("test.xlsx")
with pd.ExcelWriter("test.xlsx") as writer:
    writer.book = book
    s2.to_excel(writer, sheet_name="222", index=False)

报错原因:

在 1.5 之前,所有属性都被视为私有属性,但未强制执行。

我们在 1.5 中公开了一些属性,但对您可以使用它们执行的操作进行了一些限制。例如,您不能设置一本书。

35ee415cb6424ed0a67d498349154e4c.png

 错误: ExcelWriter.book - 属性无法访问设置 ·问题 #48780 ·熊猫-开发/熊猫 ·GitHub

pandas.DataFrame.to_excel — pandas 0.22.0 documentation (pydata.org)

解决方法:

import pandas as pd
import numpy as np

s1 = pd.DataFrame(np.array([['s1', 's1', 's1', 's1']]), columns=['a', 'b', 'c', 'd'])
s2 = pd.DataFrame(np.array([['s2', 's2', 's2', 's2']]), columns=['a', 'b', 'c', 'd'])
s1.to_excel('test.xlsx', sheet_name='111', index=False)
with pd.ExcelWriter("test.xlsx", mode='a', engine='openpyxl') as writer:
    s2.to_excel(writer, sheet_name="sheet2", index=False)

 另:也可将pandas版本降级到 1.4.4 解决问题。

 

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fbb_01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值