使用 Pandas DataFrame 测试字符串中子字符串的存在
在 Python 的 Pandas 库中处理字符串数据时,您可能会遇到需要确定是否字符串包含给定列表中的任何子字符串。虽然有多种函数可以检查子字符串是否存在,例如 df.isin() 和 df[col].str.contains(),但组合使用它们可能会有些复杂。
假设我们有一个 Pandas Series 包含“cat”、“hat”、“dog”、“fog”和“pet”等字符串,我们想要识别包含“og”或“og”的所有字符串“at。”
一种解决方案是采用正则表达式模式,使用“|”匹配列表中的任何子字符串。特点。例如,通过使用“|”连接 searchfor 中的子字符串,我们创建一个正则表达式:
>>> searchfor = ['og', 'at'] >>> regex_pattern = '|'.join(searchfor) >>> s[s.str.contains(regex_pattern)] 0 cat 1 hat 2 dog 3 fog dtype: object
此方法有效地查找 s 中包含“og”或“at”的所有字符串。这是一种简洁高效的方法。
但是,如果 searchfor 中的子字符串包含“$”或“^”等特殊字符,则使用 re.escape() 对其进行转义以确保字面匹配至关重要。例如:
>>> import re >>> matches = ['$money', 'x^y'] >>> safe_matches = [re.escape(m) for m in matches] >>> regex_pattern = '|'.join(safe_matches) >>> s[s.str.contains(regex_pattern)] 0 cat 1 hat 2 dog 3 fog dtype: object
通过转义特殊字符,我们确保它们与 str.contains 一起使用时按字面匹配每个字符。这种方法为 Pandas Series 中的子串检测提供了强大的解决方案。
以上是如何有效地检查 Pandas 系列中的多个子字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!