2017-06-07 16 views
1

に同じキーの列を組み合わせる私はパンダのデータフレームを持っている:次のように単一のアレイ

error 
0: [[0.1,0.4,-0.3]] 
1: [[-0.6,-0.3,0.2]] 
. 
. 
. 
99: [[0.4,-0.7,0.1]] 

私はこのような単一の配列にすべての値を結合したいと思います:

[0.1,0.4,-0.3,-0.6,-0.3,0.2,...,0.4,-0.7,0.1] 

がありますpandasを使用してこれを行うための速い方法か、データを繰り返し処理して配列を "手動で"構築する必要がありますか? この場合、データの順序は重要ではありません。

より一般的なケースでは、同じサイズでない配列を組み合わせる方法(たとえば、行0には3つの要素の配列が含まれ、行1には6つの要素などの配列が含まれます)。

+0

あなたが尋ねる前に何かを試してみましたか? – depperm

答えて

2

使用numpy.ravel:選択ネストさlistsためstr[0]

L = np.array(df['error'].values.tolist()).ravel().tolist() 
print (L) 
[0.1, 0.4, -0.3, -0.6, -0.3, 0.2, 0.4, -0.7, 0.1] 

より一般的なソリューション:

print (df) 
       error 
0 [[0.1,0.4,-0.3]] 
1  [[-0.6,-0.3]] 
99 [[0.4,-0.7,0.1]] 

from itertools import chain 

L = list(chain.from_iterable(df['error'].str[0])) 
print (L) 
[0.1, 0.4, -0.3, -0.6, -0.3, 0.4, -0.7, 0.1] 

L = np.concatenate(df['error'].str[0].values).tolist() 
print (L) 
[0.1, 0.4, -0.3, -0.6, -0.3, 0.4, -0.7, 0.1] 
1
df=pd.DataFrame([[0.1,0.4,-0.3],[-0.6,-0.3,0.2]]) 

df.values.flatten() 

が返す: 配列([0.1、0.4、-0.3、-0.6 、-0.3、0.2])

コラム

df.values.flatten(order='F') 

によって要素を追加し、それが返されます: 配列([0.1、-0.6、0.4、-0.3、-0.3、0.2])

+0

これは、行がシェイプ(N)である場合に機能しますが、シェイプ(N、1)であればjezraelのソリューションが必要です – ma3oun