所以第一個(和左邊的)數據幀是: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
提交
取消