【问题标题】:How to append dataframe to excel如何将数据框附加到excel
【发布时间】:2021-11-25 00:48:44
【问题描述】:

我有一个数据框,我将它保存到某个位置的 excel 文件中。 目前我是这样做的:

df.to_excel(r'C:\Users\user_name\Downloads\test.xlsx')

我面临的问题是,当我插入新数据帧时,它会覆盖旧数据帧。我想追加新数据。我尝试了几个 SOF 答案,但似乎没有任何效果。

【问题讨论】:

  • 您是否考虑过将 xlsx 文件作为数据框读取到 python 中,将数据附加到 python 中,然后将生成的 df 保存在旧文件上?

标签: python pandas jupyter-notebook


【解决方案1】:

处理它的一种方法是您可以读取 Excel 中的内容并将其与您的数据框组合,然后覆盖 excel 文件/基本上再次生成它。

这是一个类似问题的示例,询问在哪里可以使用 excel writer 找到解决方案。他们没有覆盖现有数据,而是通过读取 startrow 的现有文件来仔细设置 startrow。

可以使用命令 writer.sheets[sheetname].max_row 找到最后一行/起始行

append dataframe to excel with pandas

import pandas
from openpyxl import load_workbook

book = load_workbook('test.xlsx')
writer = pandas.ExcelWriter('test.xlsx', engine='openpyxl')
writer.book = book
writer.sheets = {ws.title: ws for ws in book.worksheets}

for sheetname in writer.sheets:
    df1.to_excel(writer,sheet_name=sheetname, startrow=writer.sheets[sheetname].max_row, index = False,header= False)

writer.save()

【讨论】:

    【解决方案2】:

    你可以先read_excel,append再回信to_excel:

    filename = r'C:\Users\user_name\Downloads\test.xlsx'
    existing = df.read_excel(filename)
    output = existing.append(df)
    output.to_excel(filename)
    

    要在读取前检查文件是否存在,可以使用:

    import os
    
    filename = r'C:\Users\user_name\Downloads\test.xlsx'
    if os.path.exists(filename):
        existing = df.read_excel(filename)
        output = existing.append(df)
    else:
        output = df
    output.to_excel(filename)
    

    【讨论】:

    • 在某些情况下excel可能不存在,我使用的上述命令也会创建一个excel文件。
    • 您可以使用 os.path.isfile 来检查文件是否存在。然后使用输出布尔值并追加或创建文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 2018-05-24
    • 2022-01-20
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 2018-02-13
    相关资源
    最近更新 更多