Как удалить дубликаты строк по условию?

Есть большой df с разными колонками. Нужно найти дубликаты строк. Поиск должен идти только по определенным колонкам и удалить только те, где в колонке type = 0.

Каким образом можно объединить drop_duplicates и условие на type?

Как пример:

id  name   type  date
1   anna   1     2021-01-01
1   anna   0     2005-17-11
1   anna   1     2099-01-05

Из такого примера нужно удалить только вторую строчку.


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

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

Воспользуйтесь комбинацией методов DataFrame.duplicated() и DataFrame.query():

mask = df.duplicated(subset=["id", "name"]) & df.query("type == 0")
res = df.loc[~mask]
→ Ссылка
Автор решения: SergFSM

вот еще рабочий вариант:

del_dupl = df[~((df.duplicated(['id','name']))&(df.type==0))]
→ Ссылка