2013-07-02 29 views
1

這是numpy數組早期學習的延續。
結構化數組是從列表元素創建的 - 然後填充值(下面未顯示)。向numpy結構數組添加新記錄

>>> o = ['x','y','z'] 
>>> import numpy as np 
>>> b = np.zeros((len(o),), dtype=[(i,object) for i in o]) 
>>> b 
array([(0, 0, 0, 0, 0), (0, 0, 0, 0, 0), (0, 0, 0, 0, 0)], 
     dtype=[('x', '|O4'), ('y', '|O4'), ('z', '|O4')]) 

上人口陣列看起來如下:

x y z 
x 0 1 0 
y 1 0 1,5 
z 0 1,5 0 

1.How我們添加新的頂點上面?
2.接通頂點已被添加,什麼是以下陣列添加到結構數組(注意:不是這個陣列中的所有頂點新):最清潔的過程

d e  y 
d 0 '1,2' 0 
e '1,2' 0  '1' 
f 0 '1'  0 

預期的輸出(請忍着我):

x y z d e f 
x 0 1 0 0 0 0 
y 1 0 1,5 0 1 0 
z 0 1,5 0 0 0 0 
d 0 0 0 0 1,2 0 
e 0 1 0 1,2 0 0 
f 0 0 0 0 1 0 

回答

0

似乎像一個工作的蟒熊貓。

>>> import numpy as np 
>>> import pandas as pd 
>>> data=np.zeros((4,5)) 
>>> df=pd.DataFrame(data,columns=['x','y','z','a','b']) 
>>> df 
    x y z a b 
0 0 0 0 0 0 
1 0 0 0 0 0 
2 0 0 0 0 0 
3 0 0 0 0 0 
>>> df['c']=0 #Add a new column 
>>> df 
    x y z a b c 
0 0 0 0 0 0 0 
1 0 0 0 0 0 0 
2 0 0 0 0 0 0 
3 0 0 0 0 0 0 

>>> new_data=pd.DataFrame([['0','1,2','0'],['1,2','0','1'],['0','1','0']],columns=['d','e','y']) 
>>> new_data 
    d e y 
0 0 1,2 0 
1 1,2 0 1 
2 0 1 0 

>>> df.merge(new_data,how='outer') #Merge data 
    x y z a b c d e 
0 0 0 0 0 0 0 NaN NaN 
1 0 0 0 0 0 0 NaN NaN 
2 0 0 0 0 0 0 NaN NaN 
3 0 0 0 0 0 0 NaN NaN 
4 NaN 0 NaN NaN NaN NaN 0 1,2 
5 NaN 0 NaN NaN NaN NaN 0 1 
6 NaN 1 NaN NaN NaN NaN 1,2 0 

有很多方法來合併,你表現的數據,可以請你詳細解釋不清楚你想要什麼樣的結局陣列的樣子?