首页 >后端开发 >Python教程 >如何使用 Pandas 将新的 DataFrame 添加到 Python 中的现有 Excel 工作表?

如何使用 Pandas 将新的 DataFrame 添加到 Python 中的现有 Excel 工作表?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-02 15:22:11432浏览

How to Append a New DataFrame to an Existing Excel Sheet in Python Using Pandas?

使用 Python Pandas 将新数据框附加到现有 Excel 工作表

在本文中,我们将探讨如何将新数据框附加到现有数据框使用 Python 的 Excel 电子表格Pandas。

问题:

使用 Pandas to_excel() 函数将新数据框附加到现有 Excel 工作表会覆盖现有数据。目标是将新数据附加到当前工作表的末尾,保留现有内容。

解决方案:

要解决此问题,我们可以利用以下步骤:

  1. 加载现有的工作簿:

    • 使用 openpyxl 包加载现有的 Excel 工作簿。
    • 将现有工作表名称保存在列表中。
  2. 准备新的数据框:

    • 从新数据框中删除任何不必要的行或列。
  3. 创建新的工作簿编写器:

    • 使用 Pandas 创建一个 ExcelWriter 对象,指定现有工作簿作为输出。
    • 如果现有工作表不存在,则将引擎设置为“openpyxl”,模式设置为“a”,if_sheet_exists 设置为“new”。
  4. 写新的数据框:

    • 将新数据框写入 ExcelWriter 创建的新工作表。
    • 根据需要调整单元格格式。
  5. 将单元格从新单元格复制到现有单元格Sheet:

    • 由于 Pandas 不支持就地追加,我们使用 openpyxl 将单元格从新工作表复制到现有工作表,从现有数据的末尾开始。
  6. 删除新的工作表:

    • 复制数据后,删除为写入新数据框而创建的新工作表。
  7. 保存并关闭工作簿:

    • 保存工作簿并关闭它。

示例:

import pandas as pd
import openpyxl
from openpyxl.utils import get_column_letter

# Load existing workbook
workbook = openpyxl.load_workbook("existing_excel.xlsx")
sheet_names = workbook.sheetnames

# Prepare new dataframe
new_df = pd.DataFrame({
    "Name": ["Alice", "Bob", "Carol"],
    "Age": [25, 30, 35]
})

# Create new workbook writer
with pd.ExcelWriter("existing_excel.xlsx", engine="openpyxl", mode="a", if_sheet_exists="new") as writer:
    # Write new dataframe
    new_df.to_excel(writer, sheet_name="NewData", index=False)

    # Get worksheet objects
    new_sheet = writer.sheets["NewData"]
    existing_sheet = workbook["ExistingData"]

    # Get last row in existing sheet
    last_row = existing_sheet.max_row

    # Copy cells from new sheet to existing sheet
    copy_excel_cell_range(
        src_ws=new_sheet,
        tgt_ws=existing_sheet,
        src_min_row=2,
        src_max_row=new_sheet.max_row,
        tgt_min_row=last_row + 1,
        with_style=True
    )

    # Remove temporary sheet
    workbook.remove(new_sheet)

# Save and close
workbook.save("existing_excel.xlsx")

通过遵循此方法,您可以将新数据无缝附加到现有 Excel 工作表,而无需覆盖现有内容.

以上是如何使用 Pandas 将新的 DataFrame 添加到 Python 中的现有 Excel 工作表?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn