Pandas データ操作では、DataFrame に複数の新しい列を効率的に追加することは、洗練されたソリューションを必要とするタスクとなる場合があります。等号を使用して列リスト構文を使用する直感的なアプローチは単純そうに見えますが、予期しない結果が生じる可能性があります。
提供された例に示されているように、次の構文は意図したとおりに新しい列を作成できません:
<code class="python">df[['column_new_1', 'column_new_2', 'column_new_3']] = [np.nan, 'dogs', 3]</code>
これは、Pandas が列リスト構文を使用する場合、割り当ての右側が DataFrame である必要があるためです。スカラー値またはリストは、このアプローチと互換性がありません。
複数の列を同時に追加するための実行可能な解決策がいくつかあります。
方法 1: 個別の割り当てイテレータのアンパックを使用する
<code class="python">df['column_new_1'], df['column_new_2'], df['column_new_3'] = np.nan, 'dogs', 3</code>
方法 2: インデックスと一致するように単一行を展開する
<code class="python">df[['column_new_1', 'column_new_2', 'column_new_3']] = pd.DataFrame([[np.nan, 'dogs', 3]], index=df.index)</code>
方法 3: を使用して一時データフレームと結合するpd.concat
<code class="python">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 )</code>
方法 4: .join を使用して一時データフレームと結合する
<code class="python">df = df.join(pd.DataFrame( [[np.nan, 'dogs', 3]], index=df.index, columns=['column_new_1', 'column_new_2', 'column_new_3'] ))</code>
方法 5: 一時データフレームに辞書を使用するDataFrame
<code class="python">df = df.join(pd.DataFrame( { 'column_new_1': np.nan, 'column_new_2': 'dogs', 'column_new_3': 3 }, index=df.index ))</code>
方法 6: 複数の列引数を指定して .assign() を使用する
<code class="python">df = df.assign(column_new_1=np.nan, column_new_2='dogs', column_new_3=3)</code>
方法 7: 列を作成してから値の割り当て
<code class="python">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</code>
方法 8: 複数の順次割り当て
<code class="python">df['column_new_1'] = np.nan df['column_new_2'] = 'dogs' df['column_new_3'] = 3</code>
最も適切な方法の選択は、DataFrame のサイズなどの要因によって異なります。追加する新しい列の数、およびタスクのパフォーマンス要件。それにもかかわらず、これらの手法により、Pandas ユーザーは DataFrame に複数の列を効率的に追加するための多様なオプションを利用できるようになります。
以上がPandas DataFrame に複数の列を同時に効率的に追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。