本文将帮助你了解我们可以用来在Pandas数据框架中搜索字符串的各种方法。
Pandas包含方法
Pandas为我们提供了一个contains()函数,可以搜索一个子串是否包含在Pandas系列或DataFrame中。
该函数接受一个字面字符串或正则表达式模式,然后与现有数据进行匹配。
该函数的语法如图所示。
Series.str.contains(pattern, case=True, flags=0, na=None, regex=True)
函数参数的表达如图所示。
- pattern- 指的是要搜索的字符序列或regex模式。
- case- 指定该函数是否应遵守大小写敏感性。
- flags- 指定要传递给RegEx模块的标志。
- na- 填补缺失的值。
- regex- 如果为真,将输入的模式作为正则表达式处理。
返回值
该函数返回一个系列或布尔值的索引,表明是否在DataFrame或系列中找到了该模式/子串。
例子
假设我们有一个如下所示的DataFrame样本。
# import pandas
import pandas as pd
df = pd.DataFrame({"full_names": ['Irene Coleman', 'Maggie Hoffman', 'Lisa Crawford', 'Willow Dennis','Emmett Shelton']})
df

搜索一个字符串
要搜索一个字符串,我们可以将子串作为模式参数传递,如图所示。
print(df.full_names.str.contains('Shelton'))
上面的代码检查字符串'Shelton'是否包含在DataFrame的full_names列中。
这应该返回一系列的布尔值,表明该字符串是否位于指定列的每一行中。
一个例子如图所示。

要获得实际值,你可以把contains()方法的结果作为数据框架的索引传给它。
print(df[df.full_names.str.contains('Shelton')])
上面的内容应该返回。
full_names
4 Emmett Shelton
对大小写敏感的搜索
如果大小写敏感性在你的搜索中很重要,你可以将大小写参数设置为True,如图所示。
print(df.full_names.str.contains('shelton', case=True))
在上面的例子中,我们将case参数设置为True,启用了大小写搜索。
由于我们搜索的是小写的字符串'shelton',该函数应该忽略大写的匹配并返回false。

正则表达式搜索
我们还可以使用正则表达式模式进行搜索。一个简单的例子如图所示。
print(df.full_names.str.contains('wi|em', case=False, regex=True))
我们在上面的代码中搜索任何与模式'wi'或'em'匹配的字符串。注意,我们将case参数设置为false,忽略了大小写的敏感性。
上面的代码应该返回。

关闭
这篇文章涵盖了如何使用contains()方法在Pandas DataFrame中搜索子串。