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

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

基本上,使用第一列作为键进行连接。 感谢。

那看起来是一个非常特定的结果。特别是因为你想要按照该特定顺序得到None。 - Falmarri
你的数组有多大?你可以先使用namedtuple + 纯Python(@Sven),然后再用numpy吗? - denis
2个回答

6

一个纯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模块


我发现使用 sqlite3 是最好的选择。基于该模块构建功能对我非常有帮助。谢谢! - UpTide

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接