2016-01-21 203 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) 
相關問題