1. ホーム
  2. パイソン

[解決済み】pandasの関数をカラムに適用して、複数の新しいカラムを作成する?

2022-03-30 21:06:47

質問

pandasでこれを行うにはどうしたらよいでしょうか。

私は、関数 extract_text_features を1つのテキストカラムで処理し、複数の出力カラムを返します。具体的には、この関数は6つの値を返します。

この関数は動作しますが、出力が正しく割り当てられるような適切な戻り値の型(pandas DataFrame/ numpy array/ Python list)はないようです。 df.ix[: ,10:16] = df.textcol.map(extract_text_features)

での反復処理に戻す必要があると思います。 df.iterrows() のように これ ?

UPDATE での繰り返し df.iterrows() は少なくとも20倍は遅いので、私は降参して、この関数を6つの異なる .map(lambda ...) を呼び出します。

UPDATE 2: この質問は、その頃にさかのぼります。 v0.11.0 使用感 df.apply が改善されたり df.assign() でした。 v0.16で追加された . したがって、この質問と回答の多くは、あまり適切ではありません。

解決方法は?

user1827356 さんの回答から推測すると、次のようにすれば一度に課題をこなすことができます。 df.merge :

df.merge(df.textcol.apply(lambda s: pd.Series({'feature1':s+1, 'feature2':s-1})), 
    left_index=True, right_index=True)

    textcol  feature1  feature2
0  0.772692  1.772692 -0.227308
1  0.857210  1.857210 -0.142790
2  0.065639  1.065639 -0.934361
3  0.819160  1.819160 -0.180840
4  0.088212  1.088212 -0.911788

EDITです。 膨大なメモリ消費と低速にご注意ください。 https://ys-l.github.io/posts/2015/08/28/how-not-to-use-pandas-apply/ !