首页 > 后端开发 > Python教程 > 如何有效过滤 Pandas DataFrame 中的多个子字符串、处理大小写和特殊字符?

如何有效过滤 Pandas DataFrame 中的多个子字符串、处理大小写和特殊字符?

Barbara Streisand
发布: 2024-12-05 16:50:12
原创
242 人浏览过

How Can I Efficiently Filter a Pandas DataFrame for Multiple Substrings, Handling Case and Special Characters?

有效过滤 Pandas 数据帧中的多个子字符串

过滤数据帧中的子字符串是一项常见任务,但对于大型数据集来说,计算成本可能会很高。在处理异常字符和不区分大小写的匹配时,挑战会更加复杂。

问题:

给定一个带有字符串列的 Pandas 数据框,有效地过滤行,使得该列至少包含子字符串列表中的一个,无论大小写和特殊字符如何

低效方法:

最初的方法涉及迭代列表中的每个子字符串,并使用 regex=False 和 case 应用 str.contains() 方法=假旗。虽然这种方法很简单,但对于大型数据集来说可能会很慢。

高效方法:

更有效的解决方案利用正则表达式来构造包含所有转义的模式由正则表达式管道 | 连接的子字符串。然后使用 str.contains() 方法对照列中的每个字符串检查此模式。

import re

lst = ['kdSj;af-!?', 'aBC+dsfa?\-', 'sdKaJg|dksaf-*']
esc_lst = [re.escape(s) for s in lst]
pattern = '|'.join(esc_lst)
df[col].str.contains(pattern, case=False)
登录后复制

这种方法的执行速度明显快于迭代方法,特别是对于需要转义的大型数据集和子字符串。

性能评估:

使用数据集50,000 个字符串和 100 个子字符串,所提出的方法大约需要 1 秒才能完成,而迭代方法大约需要 5 秒。如果任何子字符串与列值匹配,则时间会进一步改善。

以上是如何有效过滤 Pandas DataFrame 中的多个子字符串、处理大小写和特殊字符?的详细内容。更多信息请关注PHP中文网其他相关文章!

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