Python 判断 DataFrame 过滤
在数据分析的过程中,经常会需要根据特定的条件对DataFrame进行过滤,以获得我们需要的数据。在Python中,pandas库提供了丰富的功能,可以帮助我们实现DataFrame的筛选和过滤操作。本文将详细介绍如何使用Python中的pandas库进行DataFrame的过滤操作。
1. 数据准备
首先我们需要准备一些数据来构建DataFrame,这里我们使用一个包含学生信息的示例数据。假设我们有如下数据:
学生姓名 | 年龄 | 成绩 |
---|---|---|
小明 | 21 | 89 |
小红 | 20 | 78 |
小刚 | 22 | 95 |
小芳 | 19 | 85 |
我们将这些数据存储在一个名为df
的DataFrame中:
import pandas as pd
data = {'学生姓名': ['小明', '小红', '小刚', '小芳'],
'年龄': [21, 20, 22, 19],
'成绩': [89, 78, 95, 85]}
df = pd.DataFrame(data)
print(df)
运行以上代码,我们可以得到如下DataFrame:
学生姓名 年龄 成绩
0 小明 21 89
1 小红 20 78
2 小刚 22 95
3 小芳 19 85
2. 单条件过滤
首先我们来看如何根据单个条件对DataFrame进行过滤。例如,我们想要筛选出成绩大于等于90分的学生信息,可以使用以下代码实现:
high_score = df[df['成绩'] >= 90]
print(high_score)
运行以上代码,我们可以得到如下筛选结果:
学生姓名 年龄 成绩
2 小刚 22 95
3. 多条件过滤
除了单个条件过滤,我们还可以同时应用多个条件对DataFrame进行过滤。例如,我们想要筛选出年龄在20岁以上且成绩在80分以上的学生信息,可以使用以下代码实现:
filtered_data = df[(df['年龄'] > 20) & (df['成绩'] > 80)]
print(filtered_data)
运行以上代码,我们可以得到如下筛选结果:
学生姓名 年龄 成绩
2 小刚 22 95
4. 字符串条件过滤
有时候我们需要根据字符串条件进行过滤,例如筛选出姓名为”小明”的学生信息。这时可以使用==
运算符来实现:
xiaoming = df[df['学生姓名'] == '小明']
print(xiaoming)
运行以上代码,我们可以得到如下筛选结果:
学生姓名 年龄 成绩
0 小明 21 89
5. 使用query
方法进行过滤
除了使用[]
进行过滤之外,pandas还提供了query
方法,可以更加方便地进行条件过滤。例如,我们也可以使用query
方法筛选出年龄在20岁以上且成绩在80分以上的学生信息:
query_data = df.query('年龄 > 20 and 成绩 > 80')
print(query_data)
运行以上代码,我们可以得到与第3节中相同的筛选结果:
学生姓名 年龄 成绩
2 小刚 22 95
6. 使用isin
方法进行条件过滤
有时候我们需要根据一组值进行过滤,这时可以使用isin
方法。例如,我们想要筛选出年龄在20岁及以下的学生信息,可以使用以下代码:
age_filter = df[df['年龄'].isin([20, 19])]
print(age_filter)
运行以上代码,我们可以得到如下筛选结果:
学生姓名 年龄 成绩
1 小红 20 78
3 小芳 19 85
7. 使用loc
方法进行过滤
在某些情况下,我们可能需要根据行索引进行过滤。此时可以使用loc
方法来实现。例如,我们想要筛选出第2和第3行的学生信息,可以使用以下代码:
filtered_rows = df.loc[[1, 2]]
print(filtered_rows)
运行以上代码,我们可以得到如下筛选结果:
学生姓名 年龄 成绩
1 小红 20 78
2 小刚 22 95
8. 使用iloc
方法进行过滤
与loc
方法类似,iloc
方法可以根据行的位置进行过滤。例如,我们想要筛选出第2和第3行的学生信息,可以使用以下代码:
filtered_rows = df.iloc[[1, 2]]
print(filtered_rows)
运行以上代码,我们同样可以得到如下筛选结果:
学生姓名 年龄 成绩
1 小红 20 78
2 小刚 22 95
9. 结语
通过本文的介绍,我们了解了如何在Python中使用pandas库进行DataFrame的过滤操作。无论是单条件过滤、多条件过滤,还是根据索引过滤,我们都可以通过简单的代码实现自己想要的结果。