Pandas データ操作では、DataFrame に複数の新しい列を効率的に追加するのは、洗練されたソリューションを必要とするタスクになる場合があります。等号を使用して列リスト構文を使用する直感的なアプローチは簡単に思えるかもしれませんが、予期しない結果が生じる可能性があります。
提供された例に示されているように、次の構文は意図したとおりに新しい列を作成できません:
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