Я хочу использовать нечеткое сопоставление, чтобы проверить, содержат ли dataframe ключевые слова.
Однако apply
его очень медленно.
Есть ли более быстрые методы?
Можем ли мы использовать str
или re
?
import regex
result = df['sentence'].apply(lambda x: regex.compile('(keyword){e<4}').findall(x)) #slow
Большое спасибо.
Почему вы компилируете внутри приложения? Это буквально побеждает его цель. Кроме того, лучший способ ускорить apply
- не apply
.
Без контекста того, что вы на самом деле пытаетесь сопоставить, я представляю вам:
p = regex.compile('(keyword){e<4}')
result = [p.findall(x) for x in df['sentence']]
Мои тесты показывают, что соответствие регулярному выражению, основанное на списке, заменяет str
методы с точки зрения производительности. Ну, возьмите это с солью, потому что она всегда зависит от ваших данных и того, что вы пытаетесь сопоставить.
Вы можете захотеть использовать re.search
вместо findall, если хотите просто одно совпадение (для большей производительности).