问题
今天使用pandas.DataFrame.to_excel()方法将DataFrame中的数据写入表格的时候,发现原有表格的数据消失不见,只剩下新添加的表格。具体情况是使用pandas.read_excel(r'D:\test.xlsx')读入test.xlsx表格中的数据,执行修改操作,然后用df.to_excel(r'D:\test.xlsx')将数据写入原表格中。结果原表格的数据全部消失,只剩下新表格的。
于是查看官方文档,在上面找到该函数的说明,下图中蓝色的两行说明了为什么会出现这种情况,原因是使用ExcelWriter对象将表格原路径保存时,这个函数会将原表中的内容擦除,只保存DataFrame中的内容。
下图中列出的是 to_excel 函数的参数
解决方案:
1. 将数据 “另存为...” 新的文件,也就是修改新数据存储的文件名或路径。这样相当于只读取了原表的内容,没有保存到原表中,避免了对原表的修改。
2. 使用 “with …… as ……:” 语句,如下所示,这段代码在write_path指定的路径中写入了两个表,分别是“Sheet1”,“Sheet2”,这两个表的内容来自 df 和 df_nlbl
with pd.ExcelWriter(write_path) as writer:
df.to_excel(writer, sheet_name='Sheet1')
df_nlbl.to_excel(writer, sheet_name='Sheet2')