ホームページ > バックエンド開発 > Python チュートリアル > データを上書きせずに既存の Excel シートに Pandas DataFrame を追加する方法

データを上書きせずに既存の Excel シートに Pandas DataFrame を追加する方法

Barbara Streisand
リリース: 2024-12-03 15:02:11
オリジナル
360 人が閲覧しました

How to Append a Pandas DataFrame to an Existing Excel Sheet Without Overwriting Data?

Python Pandas を使用して既存の Excel シートに新しいデータフレームを追加する

課題:

新しいデータフレームをファイルの末尾に追加する既存の Excel シートを上書きせずにdata.

解決策:

Pandas バージョン 1.4.0 より前では、既存の Excel シートに追加するには、新しいデータのインデックスを既存のシートと手動で照合する必要がありました。

Pandas 用の改善されたソリューション >= 1.4.0:

Pandas 1.4.0 以降のバージョンには、既存のコンテンツを上書きせずに既存のシートに追加できる ExcelWriter 関数の「オーバーレイ」オプションが含まれています。

appended_data.to_excel(os.path.join(newpath, 'master_data.xlsx'), sheet_name='Sheet1', mode='a', if_sheet_exists='overlay')
ログイン後にコピー

パンダ向けの代替ソリューション 1.4.0:

def append_df_to_excel(filename, df, sheet_name='Sheet1', startrow=None, **to_excel_kwargs):
    """
    Append a DataFrame [df] to existing Excel file [filename]
    into [sheet_name] Sheet.
    If [filename] doesn't exist, then this function will create it.
    """
    writer = pd.ExcelWriter(filename, engine='openpyxl', mode='a')
    if sheet_name in writer.book.sheetnames:
        # try to open an existing workbook
        writer.book = load_workbook(filename)
        # truncate sheet
        if startrow is None and sheet_name in writer.book.sheetnames:
            startrow = writer.book[sheet_name].max_row
        # index of [sheet_name] sheet
        idx = writer.book.sheetnames.index(sheet_name)
        # remove [sheet_name]
        writer.book.remove(writer.book.worksheets[idx])
        # create an empty sheet [sheet_name] using old index
        writer.book.create_sheet(sheet_name, idx)
        # copy existing sheets
        writer.sheets = {ws.title: ws for ws in writer.book.worksheets}
    else:
        # file doesn't exist, we are creating a new one
        startrow = 0
    # write out the DataFrame to an ExcelWriter
    df.to_excel(writer, sheet_name=sheet_name, **to_excel_kwargs)
    writer.close()
    writer.save()

appended_data.to_excel(os.path.join(newpath, 'master_data.xlsx'), sheet_name='Sheet1', mode='a', if_sheet_exists='overlay')
ログイン後にコピー

例:

import pandas as pd

# Existing data
existing_df = pd.DataFrame({
    'Name': ['John', 'Mary', 'Bob'],
    'Age': [20, 25, 30]
})

# New data to append
new_df = pd.DataFrame({
    'Name': ['Alice', 'Tom'],
    'Age': [35, 40]
})

append_df_to_excel('master_data.xlsx', new_df, sheet_name='Sheet1', startrow=existing_df.shape[0] + 1)
ログイン後にコピー

追加の考慮事項:

  • startrow を使用して追加の開始行を指定できます
  • 他のキーワード引数を to_excel_kwargs ディクショナリ内の to_excel() メソッドに渡すことができます。
  • このソリューションは、使用されている Excel エンジン (例: 、xlrd、openpyxl).

以上がデータを上書きせずに既存の Excel シートに Pandas DataFrame を追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート