Pandas では、関数に適用されたカスタム関数に基づいて複数の新しい列を作成する必要がある状況が発生することがあります。既存のコラム。このタスクは簡単そうに見えますが、関数の期待される戻り値の型により、予期せぬ問題が発生する可能性があります。
最初は、次の出力を代入しようとするかもしれません。 df.ix[: ,10:16] = df.textcol.map(extract_text_features) 構文を使用して、DataFrame 内のインデックスの範囲に直接関数を実行します。ただし、このアプローチでは、関数の戻り値の型に互換性がないため、エラーが発生することがよくあります。
考えられる解決策の 1 つは、df.iterrows() を使用して DataFrame の各行を反復処理することです。 )。このメソッドを使用すると、関数を各行に個別に適用し、結果をタプルとして取得できます。ただし、このアプローチは他のオプションよりも大幅に遅くなる可能性があります。
より効率的で柔軟なアプローチは、zip() 関数を map() と組み合わせて使用することです。新しい列。 zip() 関数は、関数の出力をタプルに結合し、個別の列に解凍できます。たとえば、次のコードは、zip() メソッドを使用して 6 つの新しい列を作成する方法を示しています:
df['p1'], df['p2'], df['p3'], df['p4'], df['p5'], df['p6'] = zip(*df['num'].map(powers))
Pandas の最近の更新により、列に関数を適用したり、新しい列を作成したりするためのより便利な方法が導入されました。たとえば、 df.apply() メソッドを使用すると、出力形式 (DataFrame、Series、またはリスト) を指定し、追加のパラメーターを処理できます。さらに、df.assign() メソッドを使用すると、出力を明示的に割り当てることなく、新しい列を直接作成できます。これらの新しいメソッドにより、関数に基づいて複数の新しい列を作成する際の柔軟性と効率が向上します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3