Как при наличии заданого значения в столбце удалить все строки со значением другого столбца?

Имеется фрейм данных:

df = pd.DataFrame({'A': '2019 2019 2019 2020 2020 2020'.split(),
                   'B': 'one two two three two two'.split(),
                   'C': np.arange(6), 'D': np.arange(6) * 2})

введите сюда описание изображения

Если в одной из строк year есть значение one в колонке B, то надо удалить все строки, содержащие в фрейме данных year: 2019.

Нужно получить такой

введите сюда описание изображения

Как можно это сделать?


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

Автор решения: MaxU
res = df.groupby("A").filter(lambda x: ~x["B"].eq("one").any())

результат:

In [53]: res
Out[53]:
      A      B  C   D
3  2020  three  3   6
4  2020    two  4   8
5  2020    two  5  10
→ Ссылка
Автор решения: strawdog

при ваших исходных данных:

res = df[df["A"] != (df.loc[df["B"]=="one", "A"].item())]

тогда res:

      A      B  C   D
3  2020  three  3   6
4  2020    two  4   8
5  2020    two  5  10
→ Ссылка