Pandas中的布尔索引

Pandas中的布尔索引

在Pandas中,布尔索引是一种强大的方法,它允许我们根据所需条件选择DataFrame中的特定行或列。通过使用逻辑运算符和条件表达式,我们可以很容易地创建一些复杂的筛选条件。

简介

布尔索引是一种筛选数据的方法,它基于“真”或“假”的值来选择DataFrame中的特定行或列。通过使用布尔运算符(例如AND、OR和NOT),我们可以根据多个条件筛选数据。

让我们来看一个示例。假设我们有以下数据:

import pandas as pd

data = {'name': ['John', 'Sherry', 'Alex', 'Emily'],
        'age': [23, 34, 45, 21],
        'gender': ['M', 'F', 'M', 'F']}

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

输出:

     name  age gender
0    John   23      M
1  Sherry   34      F
2    Alex   45      M
3   Emily   21      F

现在,我们想筛选出年龄大于30岁的人。我们可以使用布尔索引来轻松实现:

filtered_data = df[df['age'] > 30]
print(filtered_data)

输出:

     name  age gender
1  Sherry   34      F
2    Alex   45      M

在上面的例子中,我们使用了布尔表达式 df[‘age’] > 30 来创建一个布尔索引。这个表达式返回一个布尔值序列,其中每个值都是True或False,True表示相应行的年龄大于30岁。然后,返回True的行被选中并返回到一个新的DataFrame中。

使用布尔运算符

在Pandas中,您可以使用&、|和~等布尔运算符来组合布尔表达式。

  • &:与运算符,表示两个条件都必须为True。
  • |:或运算符,表示两个条件中只有一个必须为True。
  • ~:非运算符,表示条件为False。

让我们看一些示例代码,了解如何使用这些运算符来创建筛选条件:

# 年龄大于30岁并且是女性的人
filtered_data = df[(df['age'] > 30) & (df['gender'] == 'F')]
print(filtered_data)

# 年龄大于30岁或者是女性的人
filtered_data = df[(df['age'] > 30) | (df['gender'] == 'F')]
print(filtered_data)

# 年龄不是30岁的人
filtered_data = df[~(df['age'] == 30)]
print(filtered_data)

输出:

     name  age gender
1  Sherry   34      F

     name  age gender
1  Sherry   34      F
2    Alex   45      M
3   Emily   21      F

     name  age gender
0    John   23      M
1  Sherry   34      F
2    Alex   45      M
3   Emily   21      F

在DataFrame中使用多个条件

当您需要对DataFrame进行更复杂的筛选时,可以使用多个条件表达式。例如,假设您有以下数据:

data = {'name': ['John', 'Sherry', 'Alex', 'Emily', 'Peter'],
        'age': [23, 34, 45, 21, 23],
        'gender': ['M', 'F', 'M', 'F', 'M'],
        'city': ['New York', 'Chicago', 'San Francisco', 'Seattle', 'Boston']}

要筛选出年龄大于30岁且性别为女性的人,我们可以使用以下代码:

filtered_data = df[(df['age'] > 30) & (df['gender'] == 'F')]
print(filtered_data)

输出:

     name  age gender
1  Sherry   34      F

要筛选出居住在纽约或旧金山的人,可以使用以下代码:

filtered_data = df[(df['city'] == 'New York') | (df['city'] == 'San Francisco')]
print(filtered_data)

输出:

          name  age gender           city
0         John   23      M       New York
2         Alex   45      M  San Francisco

还可以结合使用多个条件表达式来构建更复杂的筛选条件。例如,要筛选出居住在旧金山的女性,可以使用以下代码:

filtered_data = df[(df['city'] == 'San Francisco') & (df['gender'] == 'F')]
print(filtered_data)

输出:

     name  age gender           city
3   Emily   21      F       San Francisco

使用isin()函数

在Pandas中,可以使用isin()函数轻松地检查值是否存在于DataFrame中的某列中。isin()函数接受一个列表作为参数,该列表包含待匹配的值。它返回一个布尔索引,表示哪些值匹配成功。

让我们看一个示例。假设我们有以下数据:

data = {'name': ['John', 'Sherry', 'Alex', 'Emily', 'Peter', 'Jack'],
        'age': [23, 34, 45, 21, 23, 27],
        'gender': ['M', 'F', 'M', 'F', 'M', 'M'],
        'city': ['New York', 'Chicago', 'San Francisco', 'Seattle', 'Boston', 'Las Vegas']}

要筛选出居住在纽约、旧金山或拉斯维加斯的人,可以使用以下代码:

filtered_data = df[df['city'].isin(['New York', 'San Francisco', 'Las Vegas'])]
print(filtered_data)

输出:

     name  age gender           city
0    John   23      M       New York
2    Alex   45      M  San Francisco
5    Jack   27      M      Las Vegas

结论

Pandas中的布尔索引是一种非常强大的筛选数据的方法。我们可以使用布尔运算符、条件表达式和isin()函数来创建非常复杂的筛选条件。熟练掌握这些技巧,可以让我们更加高效地处理大型、复杂的数据集。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程