Pandas 如何过滤 DataFrame 中与 set 集合中的值相等的行

Pandas 如何过滤 DataFrame 中与 set 集合中的值相等的行

在本文中,我们将介绍如何使用 Pandas 过滤 DataFrame 中符合条件的行,条件是 DataFrame 的某一列中的值与一个给定的 set 集合中的值相等。

阅读更多:Pandas 教程

Pandas DataFrame 和 set

在介绍如何使用 Pandas 过滤 DataFrame 之前,我们需要了解两个概念:DataFrame 和 set。

DataFrame 是 Pandas 库中用于处理结构化数据的一种数据格式。可以将其看作是表格,其中每个表格中的行都代表一个数据记录。每行数据可以有多个列,每列表示一个数据属性。

set 是 Python 中的数据类型之一,用于表示一组无序且元素不重复的数据。set 内部的元素使用花括号 {} 包裹,各个元素之间用逗号 , 隔开。

# 示例代码
# 创建一个名为 my_set 的 set,其中包含 1, 2, 3, 4, 5 这五个元素
my_set = {1, 2, 3, 4, 5}

过滤 DataFrame 中值在 set 集合中的行

假设我们有一个 DataFrame,其中包含了多个学生的学号和所在专业。现在我们需要过滤出所有专业为计算机科学的学生的学号。

import pandas as pd

# 示例代码
# 创建一个 DataFrame,其中包含了多个学生的学号和所在专业
data = {'学号': ['201001', '201002', '201003', '201004', '201005', '201006', '201007'],
        '专业': ['计算机科学', '软件工程', '电子信息工程', '计算机科学', '通信工程', '计算机科学', '物联网工程']}
df = pd.DataFrame(data)

这个 DataFrame 的效果如下所示:

学号 专业
0 201001 计算机科学
1 201002 软件工程
2 201003 电子信息工程
3 201004 计算机科学
4 201005 通信工程
5 201006 计算机科学
6 201007 物联网工程

我们发现,我们需要提取的数据记录中,其专业列的值为“计算机科学”。那么我们可以先创建一个 set 集合,将其值设置为“计算机科学”,然后再通过 Pandas 找出 DataFrame 中专业列的值与集合中的值相等的行。

# 示例代码
# 创建一个名为 major_set 的 set,其中包含计算机科学这个元素
major_set = {'计算机科学'}

# 使用 isin 方法,对 df 中专业列的值进行查询
filtered_df = df[df['专业'].isin(major_set)]

使用过滤方法的返回值是一个新的 DataFrame,此时新的 DataFrame 仅包含曾经专业为计算机科学的学生:

学号 专业
0 201001 计算机科学
3 201004 计算机科学
5 201006 计算机科学

注意,在示例代码中,我们使用 DataFrame 列的 isin 方法来进行过滤操作。其中,该方法接受一个集合(set)或列表(list)作为参数。如果 DataFrame 的某一列的值在集合或列表中,则该条记录就符合条件,最后返回符合条件的 DataFrame## 多条件过滤 DataFrame 中值在 set 集合中的行

在实际应用中,我们很少只根据一列的值来过滤 DataFrame。通常情况下,我们会根据多个列的值来筛选数据。那么如何在 Pandas 中实现多条件过滤呢?

假设我们现在有一个 DataFrame,其中包含多个学生的姓名、学号和所在专业。现在我们需要过滤出姓名为“张三”且所在专业为计算机科学的学生的学号。

import pandas as pd

# 示例代码
# 创建一个 DataFrame,其中包含了多个学生的姓名、学号和所在专业
data = {'姓名': ['张三', '李四', '王五', '张三', '赵六', '张三', '周七'],
        '学号': ['201001', '201002', '201003', '201004', '201005', '201006', '201007'],
        '专业': ['计算机科学', '软件工程', '电子信息工程', '计算机科学', '通信工程', '计算机科学', '物联网工程']}
df = pd.DataFrame(data)

这个 DataFrame 的效果如下所示:

姓名 学号 专业
0 张三 201001 计算机科学
1 李四 201002 软件工程
2 王五 201003 电子信息工程
3 张三 201004 计算机科学
4 赵六 201005 通信工程
5 张三 201006 计算机科学
6 周七 201007 物联网工程

我们发现,我们需要提取的数据记录中,其姓名列的值为“张三”,并且专业列的值为“计算机科学”。那么我们可以使用 Pandas 的 & 运算符将两个条件连接起来,然后再通过 Pandas 找出 DataFrame 中姓名列和专业列的值与集合中的值相等的行。

# 示例代码
# 创建两个名为 name_set 和 major_set 的 set,其中包含张三和计算机科学这两个元素
name_set = {'张三'}
major_set = {'计算机科学'}

# 使用 & 运算符,组合姓名和专业两个条件,对 df 中的数据进行查询
filtered_df = df[(df['姓名'].isin(name_set)) & (df['专业'].isin(major_set))]

使用过滤方法的返回值是一个新的 DataFrame,此时新的 DataFrame 仅包含符合条件的学生记录:

姓名 学号 专业
0 张三 201001 计算机科学
3 张三 201004 计算机科学
5 张三 201006 计算机科学

在示例代码中,我们使用 & 运算符来将两个条件连接在一起,对 DataFrame 进行筛选操作。其中,& 运算符表示逻辑与操作,只有两个条件全部成立时,才会返回符合条件的 DataFrame。

总结

Pandas 是 Python 中用于数据处理的重要库之一。在 Pandas 中,我们可以使用 Boolean 索引、loc 和 iloc、isin 等多种方法来进行 DataFrame 数据的筛选和过滤操作。本文主要介绍了如何使用 Pandas 过滤 DataFrame 中与 set 集合中的值相等的行,并且还介绍了如何在 Pandas 中实现多条件过滤。这些技巧可以帮助我们更加方便地对 DataFrame 进行数据筛选、清洗和处理,从而提高数据处理的效率。

需要注意的是,在使用过滤方法时,我们需要先创建一个包含过滤条件的 set 集合,然后使用 Pandas 提供的过滤方法来筛选出符合条件的 DataFrame。在进行多条件过滤操作时,我们可以使用逻辑运算符将多个条件连接在一起,对 DataFrame 进行筛选操作。

在实际操作中,我们应该结合自己的情况和需要,选择最适合自己的 Pandas 数据处理方法和技巧,从而更加高效地处理和分析数据。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程