Как сгруппировать и отфильтровать строки в панде Python - PullRequest
0 голосов
/ 04 апреля 2019

Я бы хотел отфильтровать на основе строкового условия.

Мой фрейм данных выглядит так:

dataframe

Я хочу сгруппировать по идентификатору и отфильтровать группы, состоящие из двух слов: «добавить» и «установить». Дополнительные элементы, такие как close, не имеют значения. Я хочу фильтровать группы только с помощью "set" и "add.

Мой окончательный вывод должен выглядеть так:

final output

Я пробовал это:

df = df.groupby(['id']).filter(lambda x: (x.mode == "set" & x.mode == "add").all())

Но это даст мне сообщение об ошибке: unsupported operand type(s) for &: 'str' and 'method'

Дайте мне знать о других решениях. Спасибо!

1 Ответ

2 голосов
/ 04 апреля 2019

Вы получаете ошибку, потому что .mode - это метод в кадре данных. Вместо этого используйте ["mode"].

Для правильной фильтрации групп необходимо проверить, отображается ли «набор» в списке режимов и «добавить» в списке режимов. Код должен выглядеть так:

df.groupby("id").filter(lambda x: (x["mode"] == "set").any() & (x["mode"] == "add").any())                                                                                                                                                   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...