在使用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()
如果要全部覆盖的话, 可以把原来的数据全部清除, 然后把新数据写入.
具体代码:
参考:How to clear a range of values in an Excel workbook using OpenPyXl
注意, 这样会把原来
mysheet
的所有其它数据清除!