Отфильтровать 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