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

  • Post category:Python

pandas.Series.str.contains() 是一个Series对象的字符串处理方法,用于检查指定字符串是否包含于Series对象的每个元素中。其返回值是Series对象,元素为True或False,表示是否包含指定字符串。

该方法的语法如下:

Series.str.contains(pat, case=True, flags=0, na=nan, regex=True)

参数说明:

  • pat: 匹配的字符串或正则表达式
  • case: 是否区分大小写,缺省为True
  • flags: 编译时用的正则表达式标志位,默认为0
  • na: 缺失值用于替换
  • regex: 是否使用正则表达式,默认为True

使用示例一:

import pandas as pd

data = {'name':['Jack', 'Tom', 'Mary', 'David'],
        'age':[18, 22, 21, 19],
        'email':['abc@domain.com', 'tom@domain.cn', 'mary@domain.com', 'david@domain.cn']
       }
df = pd.DataFrame(data)

result = df['email'].str.contains('domain')
print(result)

输出结果为:

0     True
1     True
2     True
3     True
Name: email, dtype: bool

该示例中,我们创建了一个DataFrame对象df,其中包含了name, age和email三个列。使用df[’email’].str.contains()方法,判断Series对象中的每个元素是否包含字符串”domain”,返回一个bool型Series对象,其中都为True,指示每个元素都包含”domain”字符串。

使用示例二:

import pandas as pd

data = {'name':['Jack', 'Tom', 'Mary', 'David'],
        'age':[18, 22, 21, 19],
        'phone':['+1-123-456-7890', '+86-999-8888-7777', '+33-23-4567-8910', '+44-2345-6789-01']
       }
df = pd.DataFrame(data)

result = df['phone'].str.contains('\+\d{1}-')
print(result)

输出结果为:

0     True
1     True
2    False
3    False
Name: phone, dtype: bool

该示例中,我们使用正则表达式’+\d{1}-‘表示匹配”+”后面只有一位数字,接着跟着”-“符号。现在我们用该正则表达式对df[‘phone’]列做匹配,用df[‘phone’].str.contains()来查找所有匹配的行。输出结果显示,第一个和第二个元素都匹配,返回True。第三个和第四个元素都不匹配,返回False。

综上所述,pandas.Series.str.contains()函数可以用来判断Series对象的元素是否包含指定字符串或正则表达式,是一种非常实用的字符串处理方法。如果你在进行数据清洗或特征选择的过程中遇到类似的需求,不妨试试这个函数。