ホームページ  >  記事  >  バックエンド開発  >  Pandas DataFrame で複数の列を効率的に作成するにはどうすればよいですか?

Pandas DataFrame で複数の列を効率的に作成するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-29 04:24:29916ブラウズ

 How to Efficiently Create Multiple Columns in a Pandas DataFrame?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。