pandas.Series.str.contains#
- Series.str.contains(pat, case=True, flags=0, na=None, regex=True)[源代码]#
测试模式或正则表达式是否包含在 Series 或 Index 的字符串中。
返回布尔序列或索引,基于给定的模式或正则表达式是否包含在序列或索引的字符串中。
- 参数:
- patstr
字符序列或正则表达式。
- 案例布尔值, 默认为 True
如果为真,区分大小写。
- 标志int, 默认 0 (无标志)
传递给 re 模块的标志,例如 re.IGNORECASE。
- na标量,可选
填充缺失值的值。默认值取决于数组的 dtype。对于 object-dtype,使用
numpy.nan
。对于StringDtype
,使用pandas.NA
。- regex布尔值, 默认为 True
如果为真,则假设 pat 是一个正则表达式。
如果为 False,则将 pat 视为字面字符串。
- 返回:
- 布尔值的序列或索引
一个布尔值的 Series 或 Index,指示给定的模式是否包含在 Series 或 Index 的每个元素的字符串中。
参见
match
类似的,但更严格,依赖于 re.match 而不是 re.search。
Series.str.startswith
测试每个字符串元素的开头是否匹配一个模式。
Series.str.endswith
与 startswith 相同,但测试字符串的结尾。
例子
仅使用字面模式返回一系列布尔值。
>>> s1 = pd.Series(["Mouse", "dog", "house and parrot", "23", np.nan]) >>> s1.str.contains("og", regex=False) 0 False 1 True 2 False 3 False 4 NaN dtype: object
仅使用字面模式返回布尔索引。
>>> ind = pd.Index(["Mouse", "dog", "house and parrot", "23.0", np.nan]) >>> ind.str.contains("23", regex=False) Index([False, False, False, True, nan], dtype='object')
使用 case 指定区分大小写。
>>> s1.str.contains("oG", case=True, regex=True) 0 False 1 False 2 False 3 False 4 NaN dtype: object
指定 na 为 False 而不是 NaN 会将 NaN 值替换为 False。如果 Series 或 Index 不包含 NaN 值,结果的 dtype 将是 bool,否则将是 object dtype。
>>> s1.str.contains("og", na=False, regex=True) 0 False 1 True 2 False 3 False 4 False dtype: bool
当字符串中出现任意表达式时,返回 ‘house’ 或 ‘dog’。
>>> s1.str.contains("house|dog", regex=True) 0 False 1 True 2 True 3 False 4 NaN dtype: object
使用带有 flags 的正则表达式忽略大小写敏感。
>>> import re >>> s1.str.contains("PARROT", flags=re.IGNORECASE, regex=True) 0 False 1 False 2 True 3 False 4 NaN dtype: object
使用正则表达式返回任何数字。
>>> s1.str.contains("\\d", regex=True) 0 False 1 False 2 False 3 True 4 NaN dtype: object
当 regex 设置为 True 时,确保 pat 不是一个字面模式。请注意,在以下示例中,人们可能只期望 s2[1] 和 s2[3] 返回 True。然而,’.0’ 作为正则表达式匹配任何字符后跟一个 0。
>>> s2 = pd.Series(["40", "40.0", "41", "41.0", "35"]) >>> s2.str.contains(".0", regex=True) 0 True 1 True 2 False 3 True 4 False dtype: bool