在Python中,如何通过关键列合并两个数组?

5 投票
2 回答
5263 浏览
提问于 2025-04-16 07:39

假设我有两个数组(在导入了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模块

撰写回答