Найти любое слово списка в столбце данных - PullRequest
1 голос
/ 07 марта 2020

У меня есть список слов negative, в котором 4783 элемента. Я хочу использовать следующий код

tweets3 = tweets2[tweets2['full_text'].str.contains('|'.join(negative))]

Но это выдает ошибку вроде этой error: multiple repeat at position 4193.

Я не понимаю эту ошибку. Очевидно, что если я использую одно слово в str.contains, например, str.contains("deal"), я могу получить результаты.

Все, что мне нужно, - это новый информационный кадр, который содержит только те строки, которые содержат любое из слов, встречающихся в фрейм данных tweets2 столбец full_text.

По выбору я также хотел бы посмотреть, могу ли я иметь столбец boolean для настоящих и отсутствующих значений как 0 or 1.

Я пришел к использованию следующего кода с помощью @ wp78de:

tweets2['negative'] = tweets2.loc[tweets2['full_text'].str.contains(r'(?:{})'.format('|'.join(negative)), regex=True, na=False)].copy()

1 Ответ

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

Для произвольных литеральных строк, которые могут содержать метасимволы регулярного выражения, вы можете использовать функцию re.escape(). Что-то в этом направлении должно быть достаточно:

.str.contains(r'(?:{})'.format(re.escape('|'.join(words)), regex=True, na=False)]
...