如何提高在数据帧中使用模糊匹配的速度?

时间:2018-06-22 17:26:28

标签: python pandas fuzzy-search

我想使用模糊匹配来检查数据框是否包含关键字。

但是,使用apply的速度非常慢。

有没有更快的方法?

我们可以使用str还是re

import regex

result = df['sentence'].apply(lambda x: regex.compile('(keyword){e<4}').findall(x)) #slow

非常感谢您。

1 个答案:

答案 0 :(得分:2)

您为什么在应用内部进行编译?这实际上违背了它的目的。另外,加快apply通话的最佳方法是不使用apply

在没有上下文的情况下,我向您介绍:

p = regex.compile('(keyword){e<4}')
result = [p.findall(x) for x in df['sentence']]

My tests show that a list comprehension based regex match supersedes str methods in terms of performance.好吧,花点时间,因为它始终取决于您的数据和您要匹配的内容。

如果您只想进行一次匹配(以提高性能),则可能要考虑使用re.search而不是findall。