2014-01-16 121 views
1

我喜歡使用嵌套的數據結構,現在我想了解如何使用熊貓Colletting元素放入數組

這裏是一個玩具模型:

a=pd.DataFrame({'x':[1,2],'y':[10,20]}) 
b=pd.DataFrame({'x':[3,4],'y':[30,40]}) 
c=[a,b] 

現在我想得到:

sol=np.array([[[1],[3]],[[2],[4]]]) 

我有一個主意,讓兩個sol[0]sol[1]爲:

s0=np.array([item[['x']].ix[0] for item in c]) 
s1=np.array([item[['x']].ix[1] for item in c]) 

但要獲得溶膠我會跑過來的指數,我不認爲這真的是Python的...

回答

1

它看起來像你想剛剛從abx列。您可以連接兩個系列(或DataFrames)到一個新的數據幀使用pd.concat

In [132]: pd.concat([a['x'], b['x']], axis=1) 
Out[132]: 
    x x 
0 1 3 
1 2 4 

[2 rows x 2 columns] 

現在,如果你想有一個numpy的陣列,使用values attribute

In [133]: pd.concat([a['x'], b['x']], axis=1).values 
Out[133]: 
array([[1, 3], 
     [2, 4]], dtype=int64) 

如果你想有一個numpy的陣列與外形一樣sol,然後使用reshape method

In [134]: pd.concat([a['x'], b['x']], axis=1).values.reshape(2,2,1) 
Out[134]: 
array([[[1], 
     [3]], 

     [[2], 
     [4]]], dtype=int64) 

In [136]: np.allclose(pd.concat([a['x'], b['x']], axis=1).values.reshape(2,2,1), sol) 
Out[136]: True 
+0

它看起來不錯,但我仍然有一個疑問,因爲我想用李st c而不是它的元素明確。 – user2988577

+1

然後使用'pd.concat([df ['x'] for df in c],axis = 1)''。 – unutbu