pandas str.contains()方法详解
在进行数据处理和分析时,经常需要对字符串进行匹配和筛选。而pandas提供了str.contains()
方法来帮助我们实现这一目的。本文将介绍str.contains()
方法的用法和示例,帮助读者更加熟练地使用这一功能。
一、str.contains()
方法概述
str.contains()
方法是pandas中用来检测字符串中是否包含指定子字符串的函数。该方法返回一个布尔类型的Series,表明每个元素是否包含指定的子字符串。其语法如下:
Series.str.contains(self, pat, case=True, flags=0, na=nan, regex=True)
参数说明:
pat
:要搜索的子字符串,可以是普通字符串或正则表达式。case
:是否区分大小写,默认为True。flags
:正则表达式标记。na
:如果元素为缺失值(NaN),如何处理。默认为NaN。regex
:是否把pat
参数识别为正则表达式,默认为True。
二、str.contains()
方法示例
下面通过几个示例演示str.contains()
方法的用法:
示例一:简单字符串匹配
假设我们有一个包含城市信息的DataFrame,现在我们想要筛选出其中包含”京”的城市。
import pandas as pd
data = {
'city': ['北京', '上海', '广州', '深圳', '杭州']
}
df = pd.DataFrame(data)
result = df[df['city'].str.contains('京')]
print(result)
运行结果如下:
city
0 北京
示例二:正则表达式匹配
除了普通字符串匹配,str.contains()
方法还支持正则表达式。以下示例演示如何使用正则表达式匹配任意以字母开头的城市。
result = df[df['city'].str.contains('^[a-zA-Z]', regex=True)]
print(result)
运行结果如下:
city
1 上海
2 广州
3 深圳
4 杭州
示例三:忽略大小写匹配
如果我们想要忽略大小写进行匹配,可以将case
参数设置为False。
data = {
'city': ['Beijing', 'Shanghai', 'Guangzhou', 'SHENZHEN', 'Hangzhou']
}
df = pd.DataFrame(data)
result = df[df['city'].str.contains('sh', case=False)]
print(result)
运行结果如下:
city
1 Shanghai
3 SHENZHEN
示例四:处理缺失值
当数据中存在缺失值时,我们可以使用na
参数指定处理方式。下面的示例演示如何将缺失值视作不包含指定子字符串。
data = {
'city': ['北京', '上海', None, '深圳', '杭州']
}
df = pd.DataFrame(data)
result = df['city'].str.contains('京', na=False)
print(result)
运行结果如下:
0 True
1 False
2 False
3 True
4 False
Name: city, dtype: bool
三、总结
本文介绍了pandas中str.contains()
方法的用法和示例,并对常用参数进行了解释。通过str.contains()
方法,我们可以方便地对DataFrame中的字符串进行匹配和筛选,提高数据处理的效率和灵活性。