<p>我发现了另一种解决方法,用熊猫来解决问题,效率不如小熊猫,但我也希望贴出来,因为我认为这很有启发性。
给我<a href="https://stackoverflow.com/users/9209546/jpp">jpp</a>(我不知道这个方法)的好的解决方案有一个限制,<em>a</em>和<em>b</em>必须有相同的键。在</p>
<pre><code>#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
def merge_w_np(a, b):
zeros = np.zeros((a.shape[0], np.shape(b)[1] -1), dtype=int)
a = np.append(a, zeros, axis=1)
l1 = a[:,0].tolist()
for j, i in enumerate(b[:,0].tolist()):
a[l1.index(i),2] = b[j,1]
print(a)
def merge_w_pd(a, b):
dfa = pd.DataFrame(data=a, # values
index=a[:,0]) # 1st column as index
dfb = pd.DataFrame(data=b, # values
index=b[:,0]) # 1st column as index
dfa.columns = ['id', 'value']
dfb.columns = ['id', 'value']
# print('a',dfa)
# print('b',dfb)
dfc = dfa.merge(dfb, left_on='id', right_on='id', how='outer')
print(dfc)
a = np.array([[1,2], [2,8], [5,0], [6,4], [7,9]])
b = np.array([[1,10],[6,30], [5,20]])
merge_w_np(a, b)
merge_w_pd(a, b)
</code></pre>