繁体   English   中英

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

[英]How do I perform a VLOOKUP in pandas using merge where NaN is returned if values from left dataframe not found in right 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

本质上,返回左数据帧

您可以使用pd.Series.where通过计算布尔系列isin

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

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

添加indicator后您的merge即可工作

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM