迭代匹配每个值的数据帧中的列与另一个数据帧中另一列中的值

时间:2016-01-21 22:11:07

标签: python pandas

我基本上有两个数据帧。让我们说aa和bb。我想查看ba的第一列中aa的第一列中的所有值,如果它们是,我必须得到aa的第2列并将其添加到bb中的新列(如果没有多少我'我会放一个0)。让我们看一下看一些代码是否更有意义。我已经使用apply和函数完成了它:

aa=pd.DataFrame({'a':[1,2,3,4,5],'b':[6,7,8,9,0]})
bb=pd.DataFrame({'c':[11,2,13,4,15],'d':['f','h','j','k','l']})

   a  b
0  1  6
1  2  7
2  3  8
3  4  9
4  5  0

    c  d
0  11  f
1   2  h
2  13  j
3   4  k
4  15  l


def set_time_session (row):
    element = row['c']
    if element in aa['a'].unique():
        return aa['b'][aa['a']==element]
    else:
        return 0

column = bb.apply(set_time_session,axis=1)
bb['newcolumn']=column

       c  d  newcolumn
0  11  f          0
1   2  h          7
2  13  j          0
3   4  k          9
4  15  l          0

这实际上有效,但是当在具有200000行的数据帧中完成时,需要永远完成。我确信这是一种更好,更快的方法。谢谢!

1 个答案:

答案 0 :(得分:0)

试试这个:

res = pd.merge(aa, bb, left_on='a', right_on='c', how='inner', left_index=True)
bb['newcolumn']= res.reindex(range(len(aa))).fillna(0)['b']
print(bb)