pandas to_excel:写入数据,在同一个sheet中追加数据,写入到多个sheet里

pandas to_excel:写入数据,写入到多个sheet里,在同一个sheet中追加数据

一、写入数据

了解下to_excel 的其他参数,写入操作非常简单

df.to_excel('aa.xlsx')

二、写入到多个sheet中

这个就和之前写过的“解决pandas中to_excel 数据覆盖sheet表问题”是差不多的,如果要实现同时写多个sheet的话,加一个循环或者判断就好。现在下面给“解决pandas中to_excel 数据覆盖sheet表问题”的代码。可以针对sheet_name做修改或者加一个循环

import pandas as pd
from openpyxl import load_workbook
result2=[('a','2','ss'),('b','2','33'),('c','4','bbb')]#列表数据
writer = pd.ExcelWriter('123.xlsx',engine='openpyxl')#可以向不同的sheet写入数据
book=load_workbook('123.xlsx')
writer.book = book
df = pd.DataFrame(result2,columns=['xuhao','id','name'])#列表数据转为数据框
df.to_excel(writer, sheet_name='sheet2')#将数据写入excel中的sheet2表,sheet_name改变后即是新增一个sheet
writer.save()#保存

三、在同一个sheet中追加数据

pd.to_csv()的话就非常方便,直接使参数mode='a’即可,但是to_excel没有这个参数,所以只能从侧面来实现了。这里主要就是限制开始写入的行(startrow)。

逻辑是:通过数据框获取到该Excel表的行数 df_rows,然后将需要存储的数据,限制开始写入的行数,即:startrow=df_rows+1 (原表中第一个空行),然后写入到同一个sheet中。这个方法不会覆盖原来的数据,实现在同一个sheet中追加数据。

代码如下:
注意,写入时需设置不包含列序号,行序号,即header=False,index=False

import pandas as pd
from openpyxl import load_workbook
result2=[('a','2','ss'),('b','2','33'),('c','4','bbb')]#需要新写入的数据
df = pd.DataFrame(result2,columns=['xuhao','id','name'])#列表数据转为数据框
df1 = pd.DataFrame(pd.read_excel('123.xlsx',sheet_name='aa')) #读取原数据文件和表
writer = pd.ExcelWriter('123.xlsx',engine='openpyxl')
book=load_workbook('123.xlsx')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
df_rows = df1.shape[0] #获取原数据的行数
df.to_excel(writer, sheet_name='aa',startrow=df_rows+1, index=False, header=False)#将数据写入excel中的aa表,从第一个空行开始写
writer.save()#保存
  • 36
    点赞
  • 222
    收藏
    觉得还不错? 一键收藏
  • 36
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值