Python 大熊猫中的VLookup合并
我有两个df和一个公共密钥“API”。我想“VLookup”这个“API”,并用相应的答案填充这个列。我对如何利用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.
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