【问题标题】:Append data to the last row of the Excel sheet using Pandas使用 Pandas 将数据附加到 Excel 工作表的最后一行
【发布时间】:2021-11-16 05:40:10
【问题描述】:

我有一个名为 Orders 的工作表名称中的三个变量 (Acct, Order, Date) 的 Excel 数据

我通过阅读此工作表创建了一个数据框

   import pandas as pd
   sheet_file=pd_ExcelFile("Orders.xlsx", engine="openpyxl")
   for sheet_name in worksheets:
       df=pd.read_excel(sheet_file,sheet_name,header=1)
       append_data.append(df)

    append_data=pd.concat(append_data)

我有另一个名为“Total_Orders.xlsx”的 Excel 文件,其中有大约 100k 行,我需要将上述数据框附加到这个 Excel 文件(Sheet Name="Orders")

   with pd.ExcelWriter('Total_Orders.xlsx',sheet_name='Orders',engine="openpyxl") as writer:
        append_data.to_excel(writer,startrow=2,header=False,index=False)
        writer.save()

上面是覆盖数据而不是附加它。我知道startrow 是这里的关键,但我不知道如何解决这个问题。非常感谢任何帮助

【问题讨论】:

    标签: python pandas append export-to-excel pandas.excelwriter


    【解决方案1】:

    您是否尝试过mode="a",沿着这些思路:

    with pd.ExcelWriter("Total_Orders.xlsx", mode="a", engine="openpyxl") as writer:
        append_data.to_excel(writer, sheet_name="Orders")
    

    编辑 - 回应评论

    import pandas as pd
    from openpyxl.utils.dataframe import dataframe_to_rows
    from openpyxl import load_workbook
    
    append_data = pd.DataFrame([{'Acct':3, 'Order':333, 'Note':'third'},
                               {'Acct':4, 'Order':444, 'Note':'fourth'}])
        
    wb = load_workbook(filename = "stackoverflow.xlsx")
    ws = wb["Orders"]
    for r in dataframe_to_rows(append_data, index=False, header=False):  #No index and don't append the column headers
        ws.append(r)
    wb.save("stackoverflow.xlsx")
    

    stackoverflow.xlsx之前

    stackoverflow.xlsx 之后(“其他”表不受影响):

    【讨论】:

    • mode="a" 正在创建一个新工作表,但这不是我的要求。我需要做的就是从“append_data”中获取数据并将其从最后一个空白行添加到现有的 excel 中。谢谢
    • @ckp 添加了一个编辑来回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-17
    • 2018-11-20
    • 1970-01-01
    • 2020-09-12
    • 2016-10-30
    相关资源
    最近更新 更多