В Python, как мне объединить два массива по ключевому столбцу? - PullRequest
5 голосов
/ 26 ноября 2010

Предположим, у меня есть два массива (после импорта 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 ]

5 голосов
/ 26 ноября 2010

Чистый подход 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, ваши массивы, вероятно, большие, и вы ищете решение с лучшей производительностью.В этом случае я предлагаю использовать для этого некоторую реальную базу данных, например модуль sqlite3 , который поставляется с Python.

2 голосов
/ 20 октября 2011

Лучшее решение, которое я нашел, - это использование панд, которые очень хорошо справляются с соединениями, а объекты панд легко преобразуются в / из массивов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...