I am having a problem with checking attribute condition whether the attributes match in two separate dataframes and then applying spatial join.

Little background: I have two dataframes. DF1 = **digitised** is with 138 rows and a common field called **road_id**. DF2 = **buffer_dissolved** which has only 4 rows and a common field called **road_id**.


i think it could have been done with following code if they both had same records but its not the case here. 
  

    np.where(digitised['road_id'] == buffer_dissolved['road_id'], 'True', 'False')

Now the workaround is I apply spatial join first and then check conditional comparison whether both have same road_id or not but this is not exactly what i want.

Partial working

    sj = gpd.sjoin(digitised, buffer_dissolved, how='left', predicate='within', lsuffix='D', rsuffix='B')

failed attempts include: trying isin, ==. also tried converting buffer_dissolved dataframe to gpd.Series but no luck

**broken code:**

    #sj=gpd.GeoDataFrame(crs=digitised.crs)
    
    for row in digitised.itertuples():
        if row['road_id'].isin(buffer_dissolved['road_id']):
            sj = gpd.sjoin(digitised, buffer_dissolved, how='left', predicate='within', lsuffix='D', rsuffix='B')
    
    #sj.to_file('something.shp')

p.s: dont flag it for duplicate question as its nature is different. both dataframes are having diff field names and different number of records so merge, concat etc cant be applied