My data frame looks something like as below -

Here I want to find only those resturants where all food items are present - I first tried to group the rows by resturant_id but its not working
Code used for grouping -
df_new = df_new.groupby('resturant_id') ##does not group,
result is same as before
Then I basically have a list of food_items, so I go in each row looking for the food items
eg data -
items_list = ['a','b']
resturant_id price food_item
1 1 'a'
1 1 'b'
2 1 'b'
3 1 'a'
3 2 'b'
So, basically my ask is to find only those resturants where all food items are found - in our case it will be resturant 1 and 3 - because they have 'a' and 'b' both
IsIn method in pandas looks for either 'a' or 'b' but but not both at the same time (meaning it does 'OR' not 'AND') - how to do this using pandas?
If I get the resturant having all items in list then comparison of resturants should happen to return the cheapest resturant for all products.
I tried isin as below but its not working as expected -
choice = ['a','b']
df_new = df[np.isin(df['item_label'], choice)].reset_index(drop=True)
resturant_id price item_label
0 5 4.0 a
1 5 8.0 b
2 6 5.0 a
3 7 2.5 a
4 7 3.0 b
It returns even those rows where any food item is present - I want only those restrants where all food items are present - then want to find the cheapest resturant if there are more than 1 such resturant - such as 1 and 3 as explained in above example 5