2016-12-19 46 views
1
df1 
    'ID' 'Prod1' 'Prod2' 
1 223  2B  3C 
2 224  3C  2B 
3 225  3C  4B 

的重複情況下看到 'ID' 重複我以前的合併:合併()兩個數據幀在Python,看到ID

dupli = pd.merge(df1, df1, how='inner', left_on='Prod1', right_on='Prod2') 

和我:

dupli 
    'ID_x' 'ID_y' 'Prod1' 'Prod2' 
1 223  224  2B  3C 
2 224  223  3C  2B 
3 225  223  3C  2B 

,但我想要這樣的事情:

'ID_x' 'ID_y'  'Prod1_x' 'Prod1_y' 
1 223  224   2B  3C 
2 224  223   3C  2B 
3 225 Something  3C  something 

當我使用合併時,函數ta KES的第一個值,但我想要的功能,以取代和採取的第一個值,或檢查

Prod1==Prod2 and Prod2==Prod1 

回答

1

下產生你正在尋找的結果表。要確保Prod1==Prod2 and Prod2==Prod1已被選中,只需使用左連接在['Prod1, 'Prod2']['Prod2', 'Prod1']上合併,然後選擇所需的列。

(pd 
.merge(df1, df1, how='left', left_on=['Prod1', 'Prod2'], right_on=['Prod2', 'Prod1']) 
[['ID_x', 'ID_y', 'Prod1_x', 'Prod1_y']] 
) 

輸出:

ID_x ID_y Prod1_x Prod1_y 
0 223 224.0  2B  3C 
1 224 223.0  3C  2B 
2 225 NaN  3C  NaN