Python – 使用pandas搜索DataFrame中的特定值

Python – 使用pandas搜索DataFrame中的特定值

在数据科学中,使用pandas库进行数据处理是非常常见的。pandas是一个基于NumPy的库,它提供了一个强大的数据结构:DataFrame。DataFrame是一个二维表格,其中数据以列和行的形式组织。而在处理数据时,往往需要搜索DataFrame中的特定值来处理数据。本文将介绍如何使用pandas搜索DataFrame中的特定值。

创建DataFrame

首先,我们需要创建一个DataFrame作为示例数据。为了简单起见,我们可以使用以下数据:

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emma'], 
        'age': [25, 35, 45, 55, 65], 
        'city': ['New York', 'Paris', 'London', 'Tokyo', 'Singapore']}

df = pd.DataFrame(data)
print(df)

这将创建示例数据,并将其打印出来:

       name  age       city
0     Alice   25   New York
1       Bob   35      Paris
2   Charlie   45     London
3     David   55      Tokyo
4      Emma   65  Singapore

现在我们已经有了一个DataFrame,我们可以使用pandas来搜索里面的特定值。

使用.loc方法搜索DataFrame中的特定值

pandas的DataFrame具有一个非常有用的方法.loc,它可以用于根据行标签和列标签(位置或值)对数据进行访问。下面我们将使用.loc方法来搜索DataFrame中的特定值。

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emma'], 
        'age': [25, 35, 45, 55, 65], 
        'city': ['New York', 'Paris', 'London', 'Tokyo', 'Singapore']}

df = pd.DataFrame(data)

# 搜索 name = Bob 的行
print(df.loc[df['name'] == 'Bob'])

# 搜索 age > 45 或 name = Charlie 的行
print(df.loc[(df['age'] > 45) | (df['name'] == 'Charlie')])

此时,我们将会得到以下输出:

  name  age   city
1  Bob   35  Paris

      name  age       city
2  Charlie   45     London
3    David   55      Tokyo
4     Emma   65  Singapore

在上面的代码中,我们首先搜索了名为Bob的行,并使用.loc方法打印了结果。然后,我们搜索了年龄大于45岁或名为Charlie的行。

使用query方法搜索DataFrame中的特定值

另一个搜索DataFrame中特定值的方法是使用pandas的query方法。与.loc方法不同,query方法使用字符串作为条件。以下是相同的示例:

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emma'], 
        'age': [25, 35, 45, 55, 65], 
        'city': ['New York', 'Paris', 'London', 'Tokyo', 'Singapore']}

df = pd.DataFrame(data)

# 搜索 name = Bob 的行
print(df.query('name == "Bob"'))

# 搜索 age > 45 或 name = Charlie 的行
print(df.query('age > 45 or name == "Charlie"'))

此时,我们得到的输出与上面的.loc方法的输出相同。

在DataFrame中搜索多个值

有时候,我们需要同时搜索多个值。在这种情况下,我们可以使用.isin方法。.isin方法允许我们指定一个值列表,并返回DataFrame中包含这些值的所有行。

例如,如果我们希望在名为David或Emma的行中搜索示例DataFrame,可以使用以下代码:

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emma'], 
        'age': [25, 35, 45, 55, 65], 
        'city': ['New York', 'Paris', 'London', 'Tokyo', 'Singapore']}

df = pd.DataFrame(data)

# 在名为David或Emma的行中搜索
print(df.loc[df['name'].isin(['David', 'Emma'])])

这将返回以下结果:

   name  age       city
3  David   55      Tokyo
4   Emma   65  Singapore

在上面的代码中,我们将需要搜索的值列表传递给了.isin方法,并使用.loc方法打印结果。

使用str.contains方法搜索字符串

在DataFrame中搜索包含特定字符串的值时,我们可以使用str.contains方法。例如,如果我们想在示例DataFrame中搜索包含“Y”字母的城市,可以使用以下代码:

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emma'], 
        'age': [25, 35, 45, 55, 65], 
        'city': ['New York', 'Paris', 'London', 'Tokyo', 'Singapore']}

df = pd.DataFrame(data)

# 搜索包含 'Y' 字母的城市
print(df.loc[df['city'].str.contains('Y')])

这将返回以下结果:

    name  age      city
0  Alice   25  New York
3  David   55     Tokyo

在上面的代码中,我们使用df[‘city’].str.contains(‘Y’)语句获取列表中每个城市是否包含“Y”。然后,我们使用.loc方法定位这些行,并打印了结果。

使用isin和str.contains方法组合搜索

最后,我们可以将.isin和.str.contains方法组合使用来搜索满足多个条件的行。以下是一个示例,我们希望搜索示例DataFrame中名为David或Emma且城市包含字母“o”的行:

import pandas as pd

data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emma'], 
        'age': [25, 35, 45, 55, 65], 
        'city': ['New York', 'Paris', 'London', 'Tokyo', 'Singapore']}

df = pd.DataFrame(data)

# 搜索示例DataFrame中名为David或Emma且城市包含'o'字母的行
print(df.loc[df['name'].isin(['David', 'Emma']) & df['city'].str.contains('o')])

这将返回以下结果:

   name  age    city
4  Emma   65  Singapore

在上面的代码中,我们将.isin方法与.str.contains方法组合使用,以搜索满足包含“o”字母的城市和名为David或Emma的行。我们使用.loc方法定位这些行,并打印了结果。

结论

在本文中,我们介绍了如何使用pandas搜索DataFrame中的特定值。我们介绍了以下方法:

  • .loc方法:根据行标签和列标签(位置或值)访问数据。
  • .query方法:使用字符串作为条件检索数据。
  • .isin方法:搜索DataFrame中包含特定数值的行。
  • .str.contains方法:搜索包含特定字符串的行。

通过使用这些方法,我们可以轻松地搜索DataFrame中的特定值,以便更好地处理数据。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程