详解pandas.str.contains()(检测字符串包含)函数使用方法

  • Post category:Python

pandas.str.contains()是pandas库中的一个字符串方法,用于检查一个字符串是否包含另一个子字符串。下面将提供该函数的详细作用与使用方法的完整攻略。

1. 语法

pandas.str.contains(pat, case=True, flags=0, na=None, regex=True)

2. 参数

  • pat:要查找的子字符串或正则表达式。

  • case:是否区分大小写,默认为True,即表示区分大小写。

  • flags:正则表达式可选参数,可以指定正则表达式特性。

  • na:表示要替换成NaN的字符串。

  • regex:是否使用正则表达式,默认为True,即表示使用正则表达式。

3. 返回值

返回一个布尔值,表示字符串是否包含子字符串。

4. 示例

示例1:是否包含指定子字符串

import pandas as pd

# 构造数据
data = {"name": ["Alice", "Bob", "Cathy", "David", "Eva"],
        "age": [25, 19, 35, 47, 22],
        "city": ["Shanghai", "New York", "Beijing", "Hong Kong", "Tokyo"]}

# 创建DataFrame对象
df = pd.DataFrame(data)

# 判断city列是否包含"Y"字符
df['has_Y'] = df['city'].str.contains("Y")

# 输出结果
print(df)

输出结果:

    name  age       city  has_Y
0  Alice   25   Shanghai  False
1    Bob   19   New York   True
2  Cathy   35    Beijing  False
3  David   47  Hong Kong   True
4    Eva   22      Tokyo  False

从结果可以看出,has_Y列表示city是否包含“Y”字符,如果包含则为True,否则为False。

示例2:使用正则表达式

import pandas as pd

# 构造数据
data = {"name": ["Alice", "Bob", "Cathy", "David", "Eva"],
        "age": [25, 19, 35, 47, 22],
        "email": ["alice@gmail.com", "bob@qq.com", "cathy@163.com", "david@hotmail.com", "eva@outlook.com"]}

# 创建DataFrame对象
df = pd.DataFrame(data)

# 判断email列是否包含qq或163
df['has_qq_163'] = df['email'].str.contains("qq|163")

# 输出结果
print(df)

输出结果:

    name  age              email  has_qq_163
0  Alice   25    alice@gmail.com       False
1    Bob   19         bob@qq.com        True
2  Cathy   35      cathy@163.com        True
3  David   47  david@hotmail.com       False
4    Eva   22   eva@outlook.com       False

从结果可以看出,has_qq_163列表示email是否包含qq或163,如果包含则为True,否则为False。

5. 总结

pandas.str.contains()是pandas库中的一个字符串方法,用于检查一个字符串是否包含另一个子字符串。通过以上攻略,您已经会使用该函数了。