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


    一、写入到多个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()#保存
  • 相关阅读:
    06 is和==的区别 encode()编码 decode()解码
    05 dic的增删改查 字典的嵌套 考试题dic.get()的相关使用
    03 编码 int ,bool,str的常用操作 主要讲str
    01 基本数据类型 变量 if语句
    04 列表的增删改查 常用方法 元祖 range
    02 while循环 格式化输出 运算符
    多校2 Harmonious Army hdu6598 网络流
    P3159 [CQOI2012]交换棋子 网络流
    P2172 [国家集训队]部落战争 最大流
    P2402 奶牛隐藏 网络流
  • 原文地址:https://www.cnblogs.com/feifeifeisir/p/16359262.html
Copyright © 2020-2023  润新知