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

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

DDD
发布: 2024-11-27 00:14:10
原创
646 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板