使用 Pandas 进行 DataFrame 行上的复杂过滤器
Pandas 是一个强大的数据分析工具,它提供了许多功能来处理和操作数据。其中一个常见的使用场景是对 DataFrame 进行行级别的过滤。DataFrame 是 Pandas 中最常用的数据结构,类似于一个表格,它由多个行和列组成。在本文中,我们将介绍如何使用 Pandas 的复杂过滤器来筛选 DataFrame 中的行。生成一个示例 DataFrame首先,让我们生成一个示例 DataFrame,以便在后续的代码示例中使用。我们将创建一个包含学生姓名、年龄和成绩的表格。pythonimport pandas as pd# 创建示例数据data = {'姓名': ['张三', '李四', '王五', '赵六', '钱七'], '年龄': [18, 20, 19, 21, 18], '成绩': [85, 90, 77, 92, 88]}df = pd.DataFrame(data)print(df)输出结果如下:姓名 年龄 成绩0 张三 18 851 李四 20 902 王五 19 773 赵六 21 924 钱七 18 88这个 DataFrame 由五行和三列组成,每行代表一个学生的信息。使用复杂过滤器筛选行在 Pandas 中,我们可以使用布尔条件来筛选 DataFrame 的行。布尔条件是一个返回 True 或 False 的表达式,我们可以使用这些条件来指定我们想要的行。例如,我们想要筛选出成绩大于等于90分的学生,可以使用以下代码:
python# 筛选成绩大于等于90的学生filtered_df = df[df['成绩'] >= 90]print(filtered_df)输出结果如下:
姓名 年龄 成绩1 李四 20 903 赵六 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 851 李四 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 提供了强大的工具来帮助我们完成这些任务。