2017-04-19 29 views
0

我正在努力解決一個問題。將數據框中的列轉換爲矩陣Aij

我有數據集波紋管,我嘗試從Atom_combine列創建一個矩陣,如:

____|N16|CA16|C16| ... |C18|O18|N19 
N16 
CA16 
C16 
... 
C18 
O18 
N19_______________________________ 

我能請我應該開始一個例子或方向? (距離= sqrt((x1-x2)^ 2 +(y1-y2)^ 2 +(z1-z2)^ 2))的距離。

我完成了概念爲計算距離的證據,但不能找到一種方法來創建矩陣...

sample dataset

回答

1

我想你可以使用cdist找到距離矩陣(數組)。

from scipy.spatial.distance import cdist 
import numpy as np 

X = np.array([[0, 1, 0], [1, 0, 1], [2, 1, 2]]) 
D = cdist(X, X, metric='euclidean') # your distance matrix 

所以你比如你陣列XX = np.array(df[['x_coord', 'y_coord', 'z_coord']])其中df是你的數據幀。您可以將與對應指數和Atom_combine列數據幀作爲

Df = pd.DataFrame(D, index=list(df['Atom_combine']), columns=list(df['Atom_combine'])) 
+0

距離不是問題...有colnames從數據框和rownames列從數據框以及列矩陣的創建... – sb0709

+0

矩陣之後,我填滿了每個Aij距離的矩陣 – sb0709

+0

您可以使用pandas數據框來完成任務嗎?我更新了我的解決方案,以便您具有索引和列'Atom_combine' – titipata