首页 >后端开发 >Python教程 >正则表达式如何提高Pandas系列子串过滤性能?

正则表达式如何提高Pandas系列子串过滤性能?

DDD
DDD原创
2024-11-27 00:14:10696浏览

How Can Regular Expressions Improve Pandas Series Substring Filtering Performance?

提高 Pandas 系列中多个子字符串筛选的性能

当尝试筛选特定字符串列至少包含一个子字符串的行时给定列表,使用 np.logic_or.reduce() 的传统方法对于大型数据集可能效率低下。本文探讨了一种利用正则表达式来增强性能的替代方法。

建议的解决方案

我们在 str.contains() 中不使用 regex=False,而是使用正则表达式使用 re.escape() 正确转义提供的子字符串之后。这确保了文字匹配而不是正则表达式解释。然后使用正则表达式管道 (|) 将转义的子字符串组合成单个模式。

屏蔽过程

屏蔽阶段成为整个系列的循环,检查是否每个字符串与模式匹配:

df[col].str.contains(pattern, case=False)

性能比较

使用包含 100 个长度为 5 的子字符串和 50,000 个长度为 20 的字符串的样本数据集,所提出的方法大约需要 1 秒。对于相同的数据,原始方法大约需要 5 秒。

注意

此解决方案假设没有子字符串匹配的“最坏情况”场景。在有比赛的情况下,表现会进一步提高。此外,这种方法比最初的方法更有效,减少了每行所需的检查数量。

以上是正则表达式如何提高Pandas系列子串过滤性能?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn