Отфильтровать DataFrame по известным значениям в нескольких столбцах другого DataFrame

Есть DataFrame типа

   key  category quantity  amount  values
0 a01    good       3        1       0
1 a02    good       2        2       1
2 a03    good       1        1       0
3 a03   broken      2        1       4
4 a01    good       5        1       1

И второй DataFrame типа

   key  category  amount
0 a01    good       3     
1 a02    good       2      
2 a03    good       1      

Как отфильтровать первый DataFrame по второму таким образом, чтобы в первом остались все столбцы, но строки только те, в которых значения совпадают в нужных столбцах со вторым DataFrame? Т.е. иными словами второй DataFrame содержит набор уникальных значений (конкретный amount для данной category для определённого key), по которым мне нужно отфильтровать первый, сохранив все его строки с такими значениями и данные в других столбцах. На выходе должно быть:

   key  category quantity  amount  values
0 a01    good       3        3       0
1 a02    good       2        2       1
2 a03    good       1        1       0
3 a03    good       3        1       5
4 a02    good       2        2       2
5 a03    good       1        1       4

Ответы (1 шт):

Автор решения: strawdog

Попробуйте merge. Для приведенных вами примеров:

res = pd.merge(df1, df2, how="inner", on=["category", "amount", "key"])

res будет:

   key category  quantity  amount  values
0  a02     good         2       2       1
1  a03     good         1       1       0
→ Ссылка