在Python Pandas中使用VLOOKUP而不使用MERGE

7jmck4yq  于 2023-02-17  发布在  Python
关注(0)|答案(1)|浏览(133)

我有两个DataFrame,其中一个公共列作为键,我想执行VLOOKUP类操作,从第一个DataFrame中获取与第二个DataFrame中的键对应的值。

DataFrame 1
    key value
0   aaa 111
1   bbb 222
2   ccc 333
DataFrame 2
    key value
0   bbb None
1   ccc 333
2   aaa None
3   aaa 111
Desired Output
    key value
0   bbb 222
1   ccc 333
2   aaa 111
3   aaa 111

我不想使用merge,因为我的两个DF的键列可能都有NULL值,而且由于panda merge的行为与sql join不同,所有这样的行可能会彼此连接。
我试过下面的方法

DF2['value'] = np.where(DF2['key'].isnull(), DF1.loc[DF2['key'].equals(DF1['key'])]['value'], DF2['value'])

但是一直得到KeyError: False错误。

toe95027

toe950271#

您可以用途:

df2['value'] = df2['value'].fillna(df2['key'].map(df1.set_index('key')['value']))
print(df2)

# Output
   key value
0  bbb   222
1  ccc   333
2  aaa   111
3  aaa   111

相关问题