「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Pandas DataFrame に複数の列を同時に効率的に追加するにはどうすればよいですか?

Pandas DataFrame に複数の列を同時に効率的に追加するにはどうすればよいですか?

2024 年 11 月 8 日に公開
ブラウズ:376

How to Efficiently Add Multiple Columns to a Pandas DataFrame Simultaneously?

Pandas DataFrame に複数の列を同時に追加する

Pandas データ操作では、DataFrame に複数の新しい列を効率的に追加するのは、洗練されたソリューションを必要とするタスクになる場合があります。等号を使用して列リスト構文を使用する直感的なアプローチは簡単に思えるかもしれませんが、予期しない結果が生じる可能性があります。

The Challenge

提供された例に示されているように、次の構文は意図したとおりに新しい列を作成できません:

df[['column_new_1', 'column_new_2', 'column_new_3']] = [np.nan, 'dogs', 3]

これは、Pandas が列リスト構文を使用する場合、代入の右側が DataFrame である必要があるためです。スカラー値またはリストは、このアプローチと互換性がありません。

解決策

複数の列を同時に追加するための実行可能な解決策がいくつかあります。

方法 1: 個別の割り当てイテレータの使用によるアンパック

df['column_new_1'], df['column_new_2'], df['column_new_3'] = np.nan, 'dogs', 3

方法 2: インデックスに一致するように単一行を展開する

df[['column_new_1', 'column_new_2', 'column_new_3']] = pd.DataFrame([[np.nan, 'dogs', 3]], index=df.index)

方法 3: pd.concat

df = pd.concat(
    [
        df,
        pd.DataFrame(
            [[np.nan, 'dogs', 3]], 
            index=df.index, 
            columns=['column_new_1', 'column_new_2', 'column_new_3']
        )
    ], axis=1
)

方法 4: .join

df = df.join(pd.DataFrame(
    [[np.nan, 'dogs', 3]], 
    index=df.index, 
    columns=['column_new_1', 'column_new_2', 'column_new_3']
))

方法 5: 一時データフレームに辞書を使用する

df = df.join(pd.DataFrame(
    {
        'column_new_1': np.nan,
        'column_new_2': 'dogs',
        'column_new_3': 3
    }, index=df.index
))

方法 6: 複数の列引数を指定して .assign() を使用する

df = df.assign(column_new_1=np.nan, column_new_2='dogs', column_new_3=3)

方法 7: 列を作成して値を割り当てる

new_cols = ['column_new_1', 'column_new_2', 'column_new_3']
new_vals = [np.nan, 'dogs', 3]
df = df.reindex(columns=df.columns.tolist()   new_cols)    # add empty cols
df[new_cols] = new_vals        # multi-column assignment works for existing cols

に対して機能します方法 8: 複数の順次代入

df['column_new_1'] = np.nan
df['column_new_2'] = 'dogs'
df['column_new_3'] = 3

最も適切な方法の選択は、DataFrame のサイズ、追加する新しい列の数、タスクのパフォーマンス要件などの要因によって異なります。それにもかかわらず、これらの手法により、Pandas ユーザーは DataFrame に複数の列を効率的に追加するための多様なオプションを利用できるようになります。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3