Maison > développement back-end > Tutoriel Python > Comment ajouter un nouveau DataFrame à une feuille Excel existante en Python à l'aide de Pandas ?

Comment ajouter un nouveau DataFrame à une feuille Excel existante en Python à l'aide de Pandas ?

Mary-Kate Olsen
Libérer: 2024-12-02 15:22:11
original
421 Les gens l'ont consulté

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

Ajouter une feuille Excel existante avec un nouveau dataframe à l'aide de Python Pandas

Dans cet article, nous explorerons comment ajouter un nouveau dataframe à un existant Feuille de calcul Excel utilisant Python Pandas.

Problème :

Ajout d'une nouvelle trame de données à un La feuille Excel existante à l'aide de la fonction Pandas to_excel() écrase les données existantes. L'objectif est d'ajouter les nouvelles données à la fin de la feuille actuelle, en conservant le contenu existant.

Solution :

Pour résoudre ce problème, nous pouvons tirer parti des étapes suivantes :

  1. Charger le classeur existant :

    • Utiliser le package openpyxl pour charger le classeur Excel existant.
    • Enregistrez les noms de feuilles existantes dans une liste.
  2. Préparez le nouveau Dataframe :

    • Supprimez toutes les lignes ou colonnes inutiles du nouveau dataframe.
  3. Créer un nouveau classeur :

    • Créez un objet ExcelWriter à l'aide de Pandas, en spécifiant le classeur existant comme une sortie.
    • Réglez le moteur sur "openpyxl", le mode sur "a" et if_sheet_exists sur "new" si la feuille existante n'existe pas.
  4. Écrivez le nouveau dataframe :

    • Écrivez le nouveau dataframe à la nouvelle feuille créée par ExcelWriter.
    • Ajustez le formatage de la cellule comme nécessaire.
  5. Copier les cellules de la nouvelle vers la feuille existante :

    • Étant donné que Pandas ne prend pas en charge l'ajout sur place, nous utilisons openpyxl pour copier les cellules de la nouvelle feuille vers la feuille existante, en commençant à la fin de la feuille existante données.
  6. Supprimer la nouvelle feuille :

    • Après avoir copié les données, supprimez la nouvelle feuille créée pour écrire le nouveau dataframe.
  7. Enregistrer et fermer le Classeur :

    • Enregistrez le classeur et fermez-le.

Exemple :

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")
Copier après la connexion

En suivant ceci approche, vous pouvez ajouter de manière transparente de nouvelles données à une feuille Excel existante sans écraser le contenu existant.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal