これをパンダで行う方法:
単一のテキスト列に複数の出力列を返す関数がありますextract_text_features
。具体的には、関数は 6 つの値を返します。
関数は動作しますが、出力が正しく割り当てられるような適切な戻り値の型(pandas DataFrame / numpy配列/ Pythonリスト)がないようです。df.ix[: ,10:16] = df.textcol.map(extract_text_features)
df.iterrows()
だから、私は の繰り返しに戻る必要があると思う。これ?
更新: 反復処理はdf.iterrows()
少なくとも 20 倍遅くなるため、諦めて関数を 6 つの個別の.map(lambda ...)
呼び出しに分割しました。
更新2: この質問は再び聞かれましたバージョン0.11.0、使いやすさがdf.apply
改善される前、またはdf.assign()
だったv0.16で追加したがって、質問と回答の多くはあまり関連性がありません。
ベストアンサー1
私は通常、以下を使用してこれを行いますzip
:
>>> df = pd.DataFrame([[i] for i in range(10)], columns=['num'])
>>> df
num
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
>>> def powers(x):
>>> return x, x**2, x**3, x**4, x**5, x**6
>>> df['p1'], df['p2'], df['p3'], df['p4'], df['p5'], df['p6'] = \
>>> zip(*df['num'].map(powers))
>>> df
num p1 p2 p3 p4 p5 p6
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
2 2 2 4 8 16 32 64
3 3 3 9 27 81 243 729
4 4 4 16 64 256 1024 4096
5 5 5 25 125 625 3125 15625
6 6 6 36 216 1296 7776 46656
7 7 7 49 343 2401 16807 117649
8 8 8 64 512 4096 32768 262144
9 9 9 81 729 6561 59049 531441