Python 大熊猫中的VLookup合并

Python 大熊猫中的VLookup合并,python,pandas,merge,Python,Pandas,Merge,我有两个df和一个公共密钥“API”。我想“VLookup”这个“API”,并用相应的答案填充这个列。我对如何利用merge来模拟VLookup感到困惑 col_1 = ['Route', 'API', 'Owner'] data_1 = [['', '123456', ''], ['', '789123', ''], ['', '456789', ''], ['', '256709', ''] ] df1 = pd.

我有两个df和一个公共密钥“API”。我想“VLookup”这个“API”,并用相应的答案填充这个列。我对如何利用
merge
来模拟VLookup感到困惑

col_1 = ['Route', 'API', 'Owner']
data_1 = [['', '123456', ''],
          ['', '789123', ''],
          ['', '456789', ''],
          ['', '256709', '']
         ]
df1 = pd.DataFrame(data=data_1, columns=col_1)

col_2 = ['Name', 'Route', 'API', 'Owner']
data_2 = [['Hay', 'Route 12', '789123', 'Jon Doe'],
          ['Pirate', 'Route 03', '123456', 'Mary Smith'],
          ['Oat', 'Route 01', '256709', 'Jane Vick'],
          ['Pop', 'Route 04', '456789', 'Jack Roe']
         ]
df2 = pd.DataFrame(data=data_2, columns=col_2)
因此,
df1
中的空列需要根据
df2
中的API匹配来填充。我试过的方法如下

df1 = df2.merge(df2, on='API')

我已将
方式切换为使用
“内部”、“右侧”、“左侧”

但是所有方法都创建了新的列,而不是只填充已经存在的空白列。

如果您使用的是<代码>合并< /代码>,请使用如下:

df = pd.merge(df1,df2, on='API')[['Route_y','API','Owner_y']].rename(columns={'Route_y':'Route','Owner_y':'Owner'})                                                                               
输出:

      Route     API       Owner
0  Route 03  123456  Mary Smith
1  Route 12  789123     Jon Doe
2  Route 04  456789    Jack Roe
3  Route 01  256709   Jane Vick

你可以不用合并就可以做到<代码>isin
执行查找

df2[df1['API'].isin(df2['API'])].drop(['Name'],axis=1)


@迪安娜·马丁内斯如果答案有帮助,请不要忘记投票并接受它。
      Route     API       Owner
0  Route 03  123456  Mary Smith
1  Route 12  789123     Jon Doe
2  Route 04  456789    Jack Roe
3  Route 01  256709   Jane Vick
      Route     API       Owner
0  Route 12  789123     Jon Doe
1  Route 03  123456  Mary Smith
2  Route 01  256709   Jane Vick
3  Route 04  456789    Jack Roe