Python pandas在原有Excel中追加或重写sheet工作表

情景描述

想在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

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值