在Python中,如何通过键列连接两个数组?

时间:2010-11-26 17:59:21

标签: python arrays numpy

假设我有两个数组(在导入numpy之后为np),

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 个答案:

答案 0 :(得分:5)

执行此操作的纯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 module

答案 1 :(得分:2)

我找到的最佳解决方案是使用pandas,它可以很好地处理连接,并且pandas对象可以轻松地转换为numpy数组。