![](/img/trans.png)
[英]In Pandas DataFrame how to merge/join two DataFrame that has all row from left table and repeat values from right DataFrame
[英]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.