pandas如何在已有excel的sheet里完全覆盖地写入数据?pandas如何删除excel里的一行数据?
在使用pandas进行文件写入时,如果原来sheet已有数据,则新写入数据在原来数据上进行不删除地复写。比如说原来有4行数据,我想删掉一行,read为dataframe后drop掉一行,得到3行新的数据,再次to_excel后只覆盖了前3行,表格中的第4行还在。
怎样才能够真正地删除掉excel中的一行使得行数-1?
我删掉0行后写入第123行,原来第3行还在。
以下是我的代码(参照了stackoverflow上“对一个sheet写入而不影响其他sheeets的方法”).
# 读取后drop
data = pd.read_excel("data.xlsx", sheetname=sheet_name)
mydata = data.drop([0], axis=0)
# 保存新的数据
book = load_workbook('data.xlsx')
writer = pd.ExcelWriter('data.xlsx',engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
mydata.to_excel(writer, "mysheet")
writer.save()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果要全部覆盖的话, 可以把原来的数据全部清除, 然后把新数据写入.
具体代码:
参考:How to clear a range of values in an Excel workbook using OpenPyXl
注意, 这样会把原来
mysheet
的所有其它数据清除!谢谢大佬,有用。但是我目前想要将一个excel中几张sheet改写。能否请教一下。当我需要将其中的几个sheet但是又不是全部改写覆盖的话应该如何优化这段代码?