Хотя я ненавижу публиковать это как ответ, но если вы все еще заинтересованы в использовании лямбды и применять, вы можете, как показано ниже:
df=pd.DataFrame({'Order_id_July':[222,333,444,555,666,777],'stage':[1,2,3,4,5,6]})
df2=pd.DataFrame({'Order_id_August':[111,222,333,444,555]})
Функция картографирования (аналогично поиску)
def myfunc(row):
if set([row[0]]).intersection(set(df.Order_id_July)):
return int(df[df.Order_id_July==row[0]]['stage'])
return np.nan
df2['prior_stage']=df2.apply(lambda x:myfunc(x),axis=1)
Вывод:
Order_id_August prior_stage
111 NaN
222 1.0
333 2.0
444 3.0
555 4.0
Если позже вы передумаете и захотите изучить более эффективные способы решения этой задачи, попробуйте код ниже
df2.merge(df,left_on='Order_id_August',right_on='Order_id_July',how='left').drop('Order_id_July',axis=1)
Order_id_August prior_stage
111 NaN
222 1.0
333 2.0
444 3.0
555 4.0