如何在Pandas中寻找字符串

697 阅读2分钟

本文将帮助你了解我们可以用来在Pandas数据框架中搜索字符串的各种方法。

Pandas包含方法

Pandas为我们提供了一个contains()函数,可以搜索一个子串是否包含在Pandas系列或DataFrame中。

该函数接受一个字面字符串或正则表达式模式,然后与现有数据进行匹配。

该函数的语法如图所示。

Series.str.contains(pattern, case=True, flags=0, na=None, regex=True)

函数参数的表达如图所示。

  1. pattern- 指的是要搜索的字符序列或regex模式。
  2. case- 指定该函数是否应遵守大小写敏感性。
  3. flags- 指定要传递给RegEx模块的标志。
  4. na- 填补缺失的值。
  5. 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中搜索子串。