2013-07-02 31 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 

有很多方法来合并,你表现的数据,可以请你详细解释不清楚你想要什么样的结局阵列的样子?