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

yizhihongxing

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技术站

(0)
上一篇 2023年3月22日
下一篇 2023年3月22日

相关文章

合作推广
合作推广
分享本页
返回顶部