Как отфильтровать строку, если все токены в столбце содержат любой из списка стоп-слов в python? - PullRequest
0 голосов
/ 23 марта 2020

Допустим, у меня есть датафрейм:

Sentences              Group
It is you                0
She likes flower         1
She hates gardening      2

и список остановок:

from nltk.corpus import stopwords
stop_words = stopwords.words('english')

Как удалить строку, если все токены / слова в столбце df['Sentences'] содержат любые из stop_words список. Следовательно, мой результат должен быть таким:

Sentences              Group
She likes flower         1
She hates gardening      2

Ответы [ 2 ]

1 голос
/ 23 марта 2020

Вот мое решение:

filtered_df = df[~df['Sentences'].str.split().apply(lambda x: any(s for s in x if s in stop_words))]

Сначала разбиваем предложение. Затем проверьте, есть ли какое-либо из слов в предложении также в вашем stop_words. Если там есть слово, any вернет True. Мы изменим это с ~.

1 голос
/ 23 марта 2020

Вы можете разбить столбец с пробелами, а затем сравнить списки:

df = df[~df['Sentences'].apply(lambda r: list(set(r.split(' ')).intersection(stop_words))!=[] )]

~ означает, что «не содержит» следующие строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...