pandas对包含文字的列数据进行筛选str.contains()

我们在使用pandas读取Excel后一般都需要对数据进行筛选,如果是数字格式的话比较简单,如果遇到列全部都是文字的话,如果按照我们的需求进行筛选呢?如筛选有指定文字的数据集,筛选包含某几个字的数据集,甚至运用正则表达式,去使用更高级的筛选策略呢,欢迎阅读如何使用pandas对包含文字的列数据进行筛选。

样例数据:

 

固定值过滤(必须全匹配)

print(data[data['籍贯'] == '北京'])

模糊过滤  

  •        文字匹配
print(data[data['籍贯'].str.contains('河北')])

注意data['籍贯'].str.contains('河北')返回的数据类型是Series,内容为是否包含河北的bool值

 

  • 正则匹配

Str.contians也支持传入正则表达式进行匹配,这就给数据筛选提供了多的可能

print(data[data['籍贯'].str.contains('.*?泰州')])

匹配以泰州结尾的籍贯

如果觉得不错就点个赞吧 哈哈哈哈哈哈哈!

  • 18
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: pandas中的str.contains()函数用于在Series或DataFrame的字符串中查找是否包含指定的字符串,它返回一个布尔值的Series,其中每个元素表示该字符串是否包含指定的子字符串。这个函数可以用来做数据清洗、数据筛选数据分析等工作。使用时需要注意参数的传递方式和字符串匹配的规则。 ### 回答2: Pandas是一个流行的数据处理和分析工具,其中str.contains()是Pandas中处理字符串的一个方法。这个方法可以用来检查一个字符串中是否包含另一个字符串,返回一个布尔值。 在Pandas中使用str.contains()方法时,我们需要先指定一个Series或DataFrame中的名,然后使用该方法来筛选符合条件的行。 例如,在一个包含员工信息的DataFrame中,我们可以使用str.contains()方法来筛选出所有工作地点为“上海”的员工: ``` import pandas as pd # 创建一个DataFrame data = {'name': ['Tom', 'Jerry', 'Bob', 'Allen'], 'location': ['上海', '北京', '广州', '上海']} df = pd.DataFrame(data) # 使用str.contains()方法筛选符合条件的行 result = df[df['location'].str.contains('上海')] print(result) ``` 输出结果为: ``` name location 0 Tom 上海 3 Allen 上海 ``` 在上面的例子中,我们使用str.contains()方法筛选包含“上海”的行,然后将结果存储在一个新的DataFrame中。需要注意的是,该方法会自动忽略大小写。 此外,当我们需要同时匹配多个条件时,可以使用正则表达式进行复杂的规则匹配。例如,我们可以使用以下代码来筛选所有以字母“A”开头或者包含字母“o”的公司名称: ``` import pandas as pd # 创建一个包含公司名称的DataFrame data = {'company': ['Apple', 'Microsoft', 'Amazon', 'Oracle']} df = pd.DataFrame(data) # 使用正则表达式筛选符合条件的行 result = df[df['company'].str.contains('^A|o')] print(result) ``` 输出结果为: ``` company 0 Apple 2 Amazon 3 Oracle ``` 在上面的例子中,我们使用了正则表达式“^A|o”作为str.contains()方法的参数,该正则表达式匹配了以字母“A”开头或者包含字母“o”的字符串。 综上所述,Pandas中的str.contains()方法可以方便地对字符串进行匹配和筛选,支持简单的字符串匹配和复杂的正则表达式规则匹配。 ### 回答3: pandasstr.contains是一个用于检查Series或DataFrame中的字符串是否包含指定的模式的方法。它可以用于查找某个关键词、正则表达式或字符串,并返回一个布尔值的结果,用于描述字符串是否存在。 要在pandas中使用str.contains方法,首先需要将需要搜索的转换为字符串格式,可以使用astype方法将它们转换为字符串数据类型。例如,可以使用以下方法将数字转换为字符串: ``` df['col'] = df['col'].astype(str) ``` 接下来,可以使用str.contains方法来匹配:检查一个字符串是否包含另一个字符串、检查它是否符合某个正则表达式、检查它是否以某个前缀或后缀开头或结尾。 str.contains方法使用正则表达式进行匹配,因此,可以使用正则表达式标识符来指定更复杂的模式。例如,可以使用以下代码在DataFrame中查找所有以A开头和B结尾的字符串: ``` df[df['col'].str.contains(r'^A(.*)B$')] ``` 在这个例子中,r'^A(.*)B$'正则表达式被指定为模式,^(脱字符)代表字符串的开头,$(美元符号)代表字符串的结尾,(.*)代表任意字符的一个或多个字符序。这将从DataFrame的'col'中选取所有匹配模式的行。 可以使用参数case在默认情况下区分大小写或不区分大小写进行比较,如以下示例所示: ``` df[df['col'].str.contains('A', case=False)] ``` str.contains方法也支持na参数,默认情况下,它被设置为False,这意味着如果要检查是否包含某个字符串时,如果存在NaN值,则返回False。如果将na参数设置为True,则str.contains将返回NaN,而不是False。 总之,str.containspandas中一个非常有用的方法,可以在Series和DataFrame对象中轻松地查找特定模式的字符串。无论是在执行数据清洗、基于文本数据的分析,还是在其他相关任务中,它都能发挥出巨大的作用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值