在Python中,如何通过关键列合并两个数组?
假设我有两个数组(在导入了numpy库后),
a=np.array([['a',1],['b',2]],dtype=object)
和
b=np.array([['b',3],['c',4]],dtype=object)
我该如何得到:
c=np.array([['a',1,None],['b',2,3],['c',None,4]],dtype=object)
基本上,就是用第一列作为关键字来合并。
谢谢
2 个回答
2
我找到的最好方法是使用pandas,它在处理数据连接方面非常出色,而且pandas的对象可以很方便地转换成numpy数组,反之亦然。
7
如果你想用纯Python来实现这个功能,可以这样做:
da = dict(a)
db = dict(b)
c = np.array([(k, da.get(k), db.get(k))
for k in set(da.iterkeys()).union(db.iterkeys())])
不过,如果你在使用NumPy,说明你的数组可能很大,这时候你可能希望找到一个性能更好的解决方案。在这种情况下,我建议使用真正的数据库来处理,比如Python自带的sqlite3
模块。