【问题标题】:Python 3.9, Pandas - how to append dataframe in existing excelPython 3.9,Pandas - 如何在现有的 excel 中附加数据框
【发布时间】:2021-05-11 10:02:45
【问题描述】:

在 Python 中,我有一个 Pandas 数据框,我需要将其附加到 excel 中的现有数据框(相同的文件和工作表),如下所示:

如果文件不存在,这很容易,但如果它已经存在并且我想追加,我会遇到困难。我怀疑这个过程是“以附加模式打开同一个文件”->“将 df 附加到末尾”->“保存并关闭”,尽管我还不太明白。我的简化代码:

  def process(saveName, labels, data):
    if not os.path.isfile(saveName):
        df = pd.DataFrame({'Data': labels, 'Value': data})
        writer = pd.ExcelWriter(saveName, engine='openpyxl')
        df.to_excel(writer, sheet_name='Sheet1')
        writer.save()
        writer.close()
    else:
        df = pd.DataFrame({'Value': data})

saveName = 'myFile.xlsx'
labels = ['A', 'B', 'C']
data = [0.1, 0.2, 0.3]
process(saveName, labels, data)

saveName = 'myFile.xlsx'
data = [0.4, 0.5, 0.6]
process(saveName, labels, data)

【问题讨论】:

  • Excelwriter有一个mode参数,可以是ato_excel有startrow和startcol参数,用来定义插入位置。我没试过,但我想这就是他们的设想

标签: excel pandas append


【解决方案1】:

不是很Pythonic,但如果它对某人有帮助,那就太好了。 非常感谢@mcsoini 的建议,令人沮丧的是,我尝试了 mode='a' 使用 engine='openpyxl' 并且新数据已附加到新工作表中。我能解决这个问题的唯一方法是: i/ 如果文件已经存在,打开它(读取数据框,df) ii/ 从 df 中删除所有“未命名的列” iii/ 在 df 的最后一列插入新数据 iv/ 覆盖现有文件

非常笨拙,但它有效。欢迎提出建议 - 尽管请提供有效的示例代码。

def process(saveName, labels, data):
    if not os.path.isfile(saveName):
        df = pd.DataFrame({'Data': labels, 'Value': data})
        writer = pd.ExcelWriter(saveName)
        df.to_excel(writer, sheet_name='Sheet1')
        writer.save()
    else:
        df = pd.read_excel(saveName, sheet_name='Sheet1')
        for item in list(df):
            if 'Unnamed' in item:
                df = df.drop([item], axis=1)
        position = len(list(df))
        df.insert(position, 'Value', data, True)
        with pd.ExcelWriter(saveName) as writer:
            df.to_excel(writer, sheet_name='Sheet1', startrow=0, startcol=0)

saveName = 'myFile.xlsx'
labels = ['A', 'B', 'C']
data = [0.4, 0.5, 0.6]
process(saveName, labels, data)

【讨论】:

    猜你喜欢
    • 2016-10-30
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    • 2022-12-11
    • 2019-09-10
    相关资源
    最近更新 更多