2017-03-22 46 views
3

我想知道是否有可能通過給出'if'語句來合併兩個數據框。 例如如何在基於條件的python中進行合併?

DF

number account_name classification 
    1  name   named 
    2  place  partner 
    3  animal  class 
    4  thing  territory 
    5  dog   home 

DF1

account_name Number country 
name   1   xx 
place   2   xy 
animal   7   yz 
dog    8   zx 

我要尋找一個類似的代碼如下

pd.merge(df,df1, on= 'account_name') if df[number] == df1[number] 

結果是前人的精力像

number account_name classification number Country 
    1  name   named   1  xx 
    2  place  partner  2  xy 

我試過拉姆達功能以及,代碼爲

x['nn'] = x.apply(lambda y: pd.merge(df, df1, on = 'account_name') if df[number] == df1[number] else 1, axis=1) 

回答

4

看來你需要添加列參數on

df = pd.merge(df,df1, on= ['account_name', 'number']) 
print (df) 
    number account_name classification country 
0  1   name   named  xx 
1  2  place  partner  xy 

但是,如果列名是不同的使用參數left_onright_on in merge

df = pd.merge(df, 
       df1, 
       left_on= ['account_name', 'number'], 
       right_on= ['account_name', 'Number']) 
print (df) 
    number account_name classification Number country 
0  1   name   named  1  xx 
1  2  place  partner  2  xy 
+0

它總是這麼簡單。我花了幾個小時思考並嘗試合併。一旦我合併了所有可能的40k記錄匹配,然後在第二列再次合併。謝謝..解決了我生活中的大問題 –