pandas:DataFrame 行上的复杂过滤器

作者:编程家 分类: pandas 时间:2025-11-12

使用 Pandas 进行 DataFrame 行上的复杂过滤器

Pandas 是一个强大的数据分析工具,它提供了许多功能来处理和操作数据。其中一个常见的使用场景是对 DataFrame 进行行级别的过滤。DataFrame 是 Pandas 中最常用的数据结构,类似于一个表格,它由多个行和列组成。在本文中,我们将介绍如何使用 Pandas 的复杂过滤器来筛选 DataFrame 中的行。

生成一个示例 DataFrame

首先,让我们生成一个示例 DataFrame,以便在后续的代码示例中使用。我们将创建一个包含学生姓名、年龄和成绩的表格。

python

import pandas as pd

# 创建示例数据

data = {'姓名': ['张三', '李四', '王五', '赵六', '钱七'],

'年龄': [18, 20, 19, 21, 18],

'成绩': [85, 90, 77, 92, 88]}

df = pd.DataFrame(data)

print(df)

输出结果如下:

姓名 年龄 成绩

0 张三 18 85

1 李四 20 90

2 王五 19 77

3 赵六 21 92

4 钱七 18 88

这个 DataFrame 由五行和三列组成,每行代表一个学生的信息。

使用复杂过滤器筛选行

在 Pandas 中,我们可以使用布尔条件来筛选 DataFrame 的行。布尔条件是一个返回 True 或 False 的表达式,我们可以使用这些条件来指定我们想要的行。

例如,我们想要筛选出成绩大于等于90分的学生,可以使用以下代码:

python

# 筛选成绩大于等于90的学生

filtered_df = df[df['成绩'] >= 90]

print(filtered_df)

输出结果如下:

姓名 年龄 成绩

1 李四 20 90

3 赵六 21 92

通过使用布尔条件 `df['成绩'] >= 90`,我们得到了一个新的 DataFrame,其中只包含成绩大于等于90分的学生信息。

使用多个条件筛选行

除了单个条件,我们还可以使用多个条件来筛选 DataFrame 的行。在这种情况下,我们可以使用逻辑运算符(如与、或、非)来组合多个条件。

例如,我们想要筛选出年龄在18到20岁之间且成绩大于等于80分的学生,可以使用以下代码:

python

# 筛选年龄在18到20岁之间且成绩大于等于80分的学生

filtered_df = df[(df['年龄'] >= 18) & (df['年龄'] <= 20) & (df['成绩'] >= 80)]

print(filtered_df)

输出结果如下:

姓名 年龄 成绩

0 张三 18 85

1 李四 20 90

通过使用多个布尔条件 `df['年龄'] >= 18`、`df['年龄'] <= 20` 和 `df['成绩'] >= 80`,我们得到了一个新的 DataFrame,其中只包含符合所有条件的学生信息。

使用复杂函数筛选行

除了使用布尔条件外,我们还可以使用自定义的函数来筛选 DataFrame 的行。在这种情况下,我们可以编写一个函数,该函数接受每一行的数据作为输入,并根据特定的条件返回 True 或 False。

例如,我们想要筛选出名字中包含字母“三”的学生,可以使用以下代码:

python

# 筛选名字中包含字母“三”的学生

filtered_df = df[df['姓名'].apply(lambda x: '三' in x)]

print(filtered_df)

输出结果如下:

姓名 年龄 成绩

0 张三 18 85

通过使用自定义函数 `lambda x: '三' in x`,我们得到了一个新的 DataFrame,其中只包含名字中包含字母“三”的学生信息。

在本文中,我们介绍了如何使用 Pandas 的复杂过滤器来筛选 DataFrame 中的行。我们学习了如何使用布尔条件、多个条件和自定义函数来进行行级别的过滤。这些技术在数据分析和数据处理中非常有用,可以帮助我们快速准确地找到我们需要的数据。无论是分析学生成绩、筛选销售数据还是处理其他类型的数据,Pandas 提供了强大的工具来帮助我们完成这些任务。