2017-08-03 8 views
0

データフレームの各行で呼び出す関数があり、20種類の数値を返したいと思います元のデータフレームの別の列。関数から返されたリストを複数の列(パンダ)に展開する

例えば、これは関数ではありませんが、これは動作しますそれならば実際のものは

def doStuff(x): 
    return([x] * 5) 

だから、これはちょうど同じ数の5倍を返しますされます。私は

df = np.vectorize(doStuff)(df['A']) 

を呼び出した後のデータフレーム

import pandas as pd 

df = pd.DataFrame({'A' : [1,2]}) 
    A 
0 1 
1 2 
2 3 

を持っている場合ので、それは二回、私はあなたがdf.applyが必要と考えてい

A 1 2 3 4 5 
0 1 1 1 1 1 1 
1 2 2 2 2 2 2 
2 3 3 3 3 3 3 

答えて

2

のように見える終わる必要があります。

In [1254]: df['A'].apply(np.vectorize(doStuff)).apply(pd.Series) 
Out[1254]: 
    0 1 2 3 4 
0 1 1 1 1 1 
1 2 2 2 2 2 
2 3 3 3 3 3 

あなたはpd.concat(..., axis=1)を使用して、元とこれを連結することがあります。そんなに

In [1258]: pd.concat([df, df['A'].apply(np.vectorize(doStuff)).apply(pd.Series)], axis=1) 
Out[1258]: 
    A 0 1 2 3 4 
0 1 1 1 1 1 1 
1 2 2 2 2 2 2 
2 3 3 3 3 3 3 
+0

@COLDSPEED感謝を。これは完全に機能しました – Kristofersen

関連する問題