pandas.str.contains()函数是pandas库中的一个字符串匹配函数,用于在Series和DataFrame对象中通过正则表达式匹配来查找和筛选符合条件的字符串。该函数的详细用法和示例如下:
语法
pandas.str.contains(pat, case=True, flags=0, na=None, regex=True)
参数
-
pat: 字符串或正则表达式,用于查找的模式。
-
case: bool类型,默认是True,表示是否区分大小写。
-
flags: 用于re.compile()编译正则表达式的标志。
-
na: 用于替换缺失值的表示。
-
regex: bool类型,默认是True,表示字符串是否用正则表达式来匹配。
示例1
假设有如下的DataFrame对象:
import pandas as pd
data = {'id': [1, 2, 3, 4, 5],
'name': ['张三', '李四', '王五', '赵六', '钱七'],
'age': [20, 25, 22, 28, 35],
'address': ['山东省青岛市', '山西省太原市', '广东省广州市', '江苏省南京市', '河南省郑州市']}
df = pd.DataFrame(data)
print(df)
# 输出报表:
id name age address
0 1 张三 20 山东省青岛市
1 2 李四 25 山西省太原市
2 3 王五 22 广东省广州市
3 4 赵六 28 江苏省南京市
4 5 钱七 35 河南省郑州市
现在要筛选出所有地址中含有“省”的行,可以使用pandas.str.contains(),代码如下:
address_contains = df['address'].str.contains('省', regex=True)
print(df[address_contains])
# 输出结果:
id name age address
0 1 张三 20 山东省青岛市
1 2 李四 25 山西省太原市
2 3 王五 22 广东省广州市
3 4 赵六 28 江苏省南京市
4 5 钱七 35 河南省郑州市
上述代码中,address_contains变量是一个bool类型的Series对象,其中每个元素表示对应行的地址是否包含“省”。而pandas.DataFrame的[]操作可以根据Series对象进行筛选,从而得到满足条件的行。
示例2
现在有一个包含多个url地址的Series对象,要筛选出所以以“.com”结尾的URL,代码如下:
urls = pd.Series(["http://www.pythonjishu.com",
"http://www.pythonjishu.com/data-science/pandas/",
"https://github.com/pandas-dev/pandas"])
contains_string = ".com$"
only_com = urls.str.contains(contains_string)
print(urls[only_com])
# 输出结果:
0 https://www.pythonjishu.com
1 http://www.pythonjishu.com/data-science/pandas/
dtype: object
上述代码中,使用$表示正则表达式匹配字符串结尾的位置。最终得到只包含“.com”后缀URL的Series对象。
这两个示例展示了pandas.str.contains()函数的应用场景,可以帮助我们快速筛选和匹配符合条件的信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解pandas.str.contains()(检测字符串包含)函数使用方法 - Python技术站