Python 3.9,Pandas - 如何在现有 excel 中附加数据框

Python 3.9, Pandas - how to append dataframe in existing excel

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

如果文件不存在,这很容易,但如果它已经存在并且我想追加,我会遇到困难。我怀疑这个过程是'open same file in append mode'->'append df to the end'->'save and close',虽然我还不太明白。我的简化代码:

  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)

虽然不是很 Pythonic,但如果它对某人有帮助那就太棒了。 非常感谢@mcsoini 的建议,令人沮丧的是我尝试使用 engine='openpyxl' 模式='a' 并且新数据被附加到新的 sheet。我能解决这个问题的唯一方法是: i/ 如果文件已经存在,打开它(读取数据框,df) ii/ 从 df 中删除所有 'Unnamed columns' 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)