Как при наличии заданого значения в столбце удалить все строки со значением другого столбца?
Имеется фрейм данных:
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

