2017-08-16 73 views
1

我有一列熊貓數據幀,我想對其執行矩陣運算。然而,經仔細檢查向量都包裹與新行字符的字符串看似嵌入其中:如何將包裝爲字符串的矢量轉換爲熊貓數據框中的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

希望下面的作品你所期望的

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 

輸出如下

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, ... 

這是不優雅調用替換功能這麼多次。但是我沒有找到更好的方法。無論如何,它應該可以幫助你將字符串轉換爲矢量。

一個方面的說明,因爲數據顯示在圖片中,您最好檢查您的數據分隔是通過空間還是製表符來完成。如果是選項卡,請將sep =''更改爲sep ='\ t'

相關問題