2017-08-16 14 views
1

私は行列算術演算を実行したいベクトルの列を持つpandasデータフレームを持っています。しかし、精密検査時にベクトルは、すべての一見それらに埋め込まれた改行文字を含む文字列としてラップされていますpandas dataframeで文字列としてラップされた文字列をnumpy配列に変換するには?

enter image description here

私はnumpyの配列にこのコラムでは、各ベクトルを変換する方法を教えてください。私は

df['Word Vector'].as_matrix 

np.array(df['Word Vector']) 

ならびに

df['Word Vector'] = df['Word Vector'].astype(np.array) 

を試みたが、いずれも、所望の結果を生じませんでした。任意のポインタが評価されるだろう!

+0

私たちが実験できるデータの例。 – MedAli

+0

@MedAliこれを行う最善の方法は何ですか?私はプロセスがこの形式を生成したかどうか分からず、どうすればデータフレームのサンプルをstackoverflowにアップロードできますか? – Matt

答えて

2

あなたは機能を交換するので、何度も呼び出すことがエレガントではありません

sample 
               words 
0 [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 
1 [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 
2 [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 
3 [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 
result 
0 [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, ... 
1 [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, ... 
2 [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, ... 
3 [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, ... 

を以下のよう

import pandas as pd 
import numpy as np 

x = str(np.arange(1,100)) 
df = pd.DataFrame([x,x,x,x]) 
df.columns = ['words'] 
print 'sample' 
print df.head() 
result = df['words'].apply(lambda x: 
          np.fromstring(
           x.replace('\n','') 
           .replace('[','') 
           .replace(']','') 
           .replace(' ',' '), sep=' ')) 
print 'result' 
print result 

出力を期待したものとして、次の作品を願っています。しかし、私はより良いアプローチを見つけることができませんでした。とにかく文字列をベクトルに変換するのに役立ちます。

データが画面に表示されるので、データの分離がスペースまたはタブで行われているかどうかを確認することをお勧めします。タブであれば、sep = ''をsep = '\ t'に変更してください。

関連する問題