【问题标题】:Save 2 dataframes to sheets 1 and 2 in excel with pandas but to keep sheet2 as it is in excel itself?使用 pandas 将 2 个数据框保存到 excel 中的工作表 1 和 2,但要保持工作表 2 与 excel 本身一样?
【发布时间】:2021-05-11 22:12:54
【问题描述】:
writer = pd.ExcelWriter('Output.xlsx', engine='xlsxwriter')

Sorted_Dataframe_1.to_excel(writer, sheet_name='Sheet1')
Sorted_Dataframe_2.to_excel(writer, sheet_name='Sheet2')

writer.save()
writer.close()

我有 2 个 DataFrame,我想将它们分别保存到名为“Output”的现有 Excel 到 Sheet1 和 Sheet2(参见代码)。我在 Excel 本身的 Sheet3 中工作,每次运行代码时,它都会删除 Sheet3,从而覆盖整个 Excel。是否有任何功能可以仅“更新”工作表 1 和 2,但不触及“输出”xlsx 中的功能我不记得的其他工作表?

【问题讨论】:

    标签: python pandas export-to-excel


    【解决方案1】:

    您能否将模式设置为“a”(用于追加)。请参阅Pandas ExcelWriter docs

    writer = pd.ExcelWriter('Output.xlsx', mode='a', engine='xlsxwriter')
    

    【讨论】:

    • 我试过了。它给了我一个错误:raise ValueError("Append mode is not supported with xlsxwriter!") ValueError: Append mode is not supported with xlsxwriter!
    • 尝试删除引擎关键字 -- 除非您特别想使用 xlsxWriter 引擎?
    • 你试过writer = pd.ExcelWriter('Output.xlsx', mode='a')
    【解决方案2】:

    Xlsxwriter 只能从头开始编写新的 excel 文件,它不能追加到现有文件。 这是解释here

    它无法读取或修改现有的 Excel XLSX 文件。

    openpyxl 支持读取和追加现有文件,所以你应该设置

    with pd.ExcelWriter('output.xlsx',
                        mode='a', engine ='openpyxl') as writer:  
        df.to_excel(writer, sheet_name='Sheet_name_3')
    

    这来自docs,但我添加了engine ='openpyxl',没有它我不确定它是否会起作用。

    这里有一个非常相似的问题:Append a sheet to an existing excel file using openpyxl

    【讨论】:

    • 好的,谢谢!!唯一的问题:如果我再次运行代码,它会从 python 的导出中添加新的“sheet12”和“sheet21”,除了已经存在的 sheet1 和 sheet2。无论如何要确保它覆盖 Sheet1 和 sheet2 而不是添加新的? @pythonista 匿名
    • 对不起,我对openpyxl还不够熟悉。但是,如果您找到解决方案,请在此处发布 - 我也会感兴趣
    猜你喜欢
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    相关资源
    最近更新 更多