所以第一个(和左边的)数据帧是:NameBreesBradyRodgersMahomes第二个(也是右边的)数据框是:NameBreesBradyWilsonMahomes我想回来NameBreesBradyNaNMahomes我使用了代码pd.merge(df,df1,on="Name",how='left'),但它返回:NameBreesBradyRodgersMahomes本质上,返回左数据帧
3 回答

幕布斯6054654
TA贡献1876条经验 获得超7个赞
您可以使用pd.Series.where通过isin以下方式计算的布尔系列:
df1['Name'] = df1.where(df1['Name'].isin(df2['Name']))
print(df1)
# Name
# 0 Brees
# 1 Brady
# 2 NaN
# 3 Mahomes

素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
您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

小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
制作左侧数据框的副本并“划掉”其值不在右侧数据框中的行:
df1 = df.copy()
df1.loc[~df.isin(df2)["Name"], "Name"] = np.nan
# Name
#0 Brees
#1 Brady
#2 NaN
#3 Mahomes
添加回答
举报
0/150
提交
取消