Pandas で複数の列を効率的に作成する
パンダの列に関数を適用して複数の新しい列を生成するのは一般的なタスクです。ただし、効率的で正しい割り当てを確実に行うための適切なアプローチを見つけるのは難しい場合があります。
pandas の以前のバージョン (v0.16 より前) では、df.iterrows() による反復処理がよく使用されていました。ただし、これは最新のアプローチよりも大幅に時間がかかります。最近の改良により、いくつかの効率的なオプションが利用可能になりました。
推奨されるアプローチの 1 つは、zip() 関数を使用して、適用された関数の出力を解凍し、それらを目的の列に割り当てることです。この方法は、行ごとに一連のタプルを作成し、各タプルに必要な出力値を含めることによって機能します。その後、タプルが解凍され、対応する列に割り当てられます。
<code class="python">df['p1'], df['p2'], df['p3'], df['p4'], df['p5'], df['p6'] = \ zip(*df['num'].map(powers))</code>
より直接的なアプローチを提供する apply() 関数も使用できます。適用された関数は、必要な列数と入力 DataFrame に一致する行インデックスを持つ pandas DataFrame を返す必要があります。
<code class="python">df = df.apply(lambda x: powers(x['num']), axis=1, result_type='expand')</code>
pandas v0.16 で導入された assign() 関数は、次の別の便利な方法を提供します。新しい列を作成します。これにより、ユーザーは式を使用して新しい列を DataFrame に直接割り当てることができます。
<code class="python">df = df.assign(p1=df['num'].map(lambda x: x), p2=df['num'].map(lambda x: x**2))</code>
以上がPandas DataFrame で複数の列を効率的に作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。