如果在右侧数据框中找不到左侧数据框中的值,如何使用合并在熊猫中执行VLOOKUP?

时间:2019-01-13 00:48:22

标签: python pandas dataframe

因此,第一个(左侧)数据帧是:

Name
Brees
Brady
Rodgers
Mahomes

第二个(右)数据框是:

Name
Brees
Brady
Wilson
Mahomes

我想回来

Name
Brees
Brady
NaN
Mahomes

我使用了代码pd.merge(df,df1,on="Name",how='left'),但它返回:

Name
Brees
Brady
Rodgers
Mahomes

基本上,返回左数据帧

3 个答案:

答案 0 :(得分:2)

您可以将pd.Series.where与通过isin计算的布尔序列一起使用:

df1['Name'] = df1.where(df1['Name'].isin(df2['Name']))

print(df1)
#       Name
# 0    Brees
# 1    Brady
# 2      NaN
# 3  Mahomes

答案 1 :(得分:2)

添加merge后,您的indicator就可以工作

df1.mask(df1.merge(df2,how='left',indicator =True)['_merge']=='left_only')
Out[8]: 
      Name
0    Brees
1    Brady
2      NaN
3  Mahomes

答案 2 :(得分:1)

制作左侧数据框的副本,并“划掉”其值不在右侧daraframe中的行:

df1 = df.copy()
df1.loc[~df.isin(df2)["Name"], "Name"] = np.nan
#      Name
#0    Brees
#1    Brady
#2      NaN
#3  Mahomes
相关问题