Pandas では、関数に適用されたカスタム関数に基づいて複数の新しい列を作成する必要がある状況が発生することがあります。既存のコラム。このタスクは単純そうに見えますが、関数の期待される戻り値の型によって予期せぬ問題が発生する可能性があります。
最初に、次の出力を代入しようとするかもしれません。 df.ix[: ,10:16] = df.textcol.map(extract_text_features) 構文を使用して、DataFrame 内のインデックスの範囲に直接関数を実行します。ただし、このアプローチでは、関数の戻り値の型に互換性がないため、エラーが発生することがよくあります。
考えられる解決策の 1 つは、df.iterrows() を使用して DataFrame の各行を反復処理することです。 )。このメソッドを使用すると、関数を各行に個別に適用し、結果をタプルとして取得できます。ただし、このアプローチは他のオプションよりも大幅に遅くなる可能性があります。
より効率的で柔軟なアプローチは、zip() 関数を map() と組み合わせて使用して、新しい列。 zip() 関数は、関数の出力をタプルに結合し、個別の列に解凍できます。たとえば、次のコードは、zip() メソッドを使用して 6 つの新しい列を作成する方法を示しています。
<code class="python">df['p1'], df['p2'], df['p3'], df['p4'], df['p5'], df['p6'] = zip(*df['num'].map(powers))</code>
Pandas の最近の更新により、関数を適用するためのより便利なメソッドが導入されました。列への追加と新しい列の作成。たとえば、 df.apply() メソッドを使用すると、出力形式 (DataFrame、Series、またはリスト) を指定し、追加のパラメーターを処理できます。さらに、df.assign() メソッドを使用すると、出力を明示的に割り当てることなく、新しい列を直接作成できます。これらの新しいメソッドにより、関数に基づいて複数の新しい列を作成する際の柔軟性と効率が向上します。
以上がPandas の関数から複数の新しい列を効率的に作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。