情景描述
想在excel中添加几个工作表来保存python得到的同一类型的多个阶段数据变量,非一次性保存,且是多次打开那种方式。
使用xlwt会覆盖掉以前的所有数据(且是通过遍历保存),看了好多帖子发现pandas可以实现我想要的功能,但是没有很直接的方法可以直接使用,且依然会覆盖以及报错等问题,最后发现pd.ExcelWriter()函数有个重要的参数可以直接实现追加工作表的功能。代码和解释如下:
自定义追加变量到excel工作表的函数
// 导包
import os
import numpy as np
import pandas as pd # 导入模块
from openpyxl import load_workbook #之前尝试用这个包读取现有的表格,然后再追加,费了时间但是没搞通
def save_variable(filename,sheetname,variable): #filename后面记得加上文件的后缀 .xls或者.xlsx
# 重要的是写入函数对象的建立,即if else里的两种情况
# 如果文件对象不存在,那么就使用默认的模式,即mode=‘w’,会创建一个新的文件
if not os.path.exists(filename):
writer = pd.ExcelWriter(filename, engine='openpyxl')
else: # 如果文件对象存在,那么就使用追加模式,设置if_sheet_exists='overlay',此时需要设置mode=‘a’
writer = pd.ExcelWriter(filename, engine='openpyxl', mode='a', if_sheet_exists='overlay')
# 后面是保存数据相关的代码了,
pd_data = pd.DataFrame(variable) #将变量转换成df格式
pd_data.to_excel(writer, sheet_name=sheetname, header=None, index=None) #不要索引、不要表头
writer.save()
writer.close()
if __name__ == '__main__':
#测试同一个工作表进行重写
a1 = np.array([1,1,1])
a2 = np.array([2,2,2])
filename = './test1.xlsx' #当前文件夹下建立文件 后缀xlsx或者xls均可,具体区别:不知道。
save_variable(filename,'1',a1)
save_variable(filename,'1',a2) #对于只有一行的数组,写进去的是一列,有空再摸索....
#测试添加新表到现有的excel文件之中
b = np.array([[1, 2, 1], [1, 3, 6]])
save_variable(filename,'2',b)
参考某作者帖子
pandas如何在同一工作簿中保存多个sheet—–pd.ExcelWriter() 这个作者的代码显然是无法实现想要的功能,但是也提到了mode参数。下面那位写的更深入…
Pandas向本地Excel已存在的工作表追加写入DataFrame
原文地址:https://blog.csdn.net/weixin_51591389/article/details/129795842
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_15799.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。