2016-01-21 153 views
1

我基本上有两个数据帧。假设aa和bb。我想查看bb第一列中aa第一列中的所有值,如果他们是我必须获取aa的第2列并将其添加到bb中的新列(如果没有太多的话,会把0)。让我们看看是否看一些代码更有意义。我已经做到了使用应用和功能:迭代数据框中的列,将每个值与另一个数据框中另一列中的值匹配

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完成时它永远完成。我相信这是一个更好更快的方法。谢谢!

回答

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) 
相关问题