在Python中使用apply()函数进行条件筛选
发布时间:2024-01-05 06:39:51
在Python中,apply()函数被用来对数据进行条件筛选。apply()函数可以用于Series、DataFrame和GroupBy对象。
apply()函数接受一个函数作为参数,并将该函数应用于对象的每个元素或每个分组。然后,根据函数的返回值进行条件筛选。
下面是一些使用apply()函数进行条件筛选的例子:
1. 对Series对象进行条件筛选
假设有一个Series对象,表示学生的成绩。我们想要筛选出成绩大于等于80分的学生。
import pandas as pd grades = pd.Series([85, 90, 75, 95, 80]) filtered_grades = grades.apply(lambda x: x >= 80) print(filtered_grades)
输出结果为:
0 True 1 True 2 False 3 True 4 True dtype: bool
上述代码中,我们通过使用lambda函数对每个成绩进行判断,并返回布尔值。然后,apply()函数将返回的布尔值组合成一个新的Series对象。
2. 对DataFrame对象进行条件筛选
假设有一个DataFrame对象,表示学生的姓名和成绩。我们想要筛选出成绩大于等于80分的学生。
import pandas as pd
data = {
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'grade': [85, 90, 75, 95, 80]
}
df = pd.DataFrame(data)
filtered_df = df[df['grade'].apply(lambda x: x >= 80)]
print(filtered_df)
输出结果为:
name grade
0 Alice 85
1 Bob 90
3 David 95
4 Eve 80
上述代码中,我们使用apply()函数将lambda函数应用于成绩这一列,并根据返回的布尔值对DataFrame进行筛选。
3. 对GroupBy对象进行条件筛选
假设有一个DataFrame对象,表示学生的姓名、科目和成绩。我们想要筛选出每个科目中成绩最高的学生。
import pandas as pd
data = {
'name': ['Alice', 'Bob', 'Charlie', 'Alice', 'Bob', 'Charlie'],
'subject': ['Math', 'Math', 'Math', 'English', 'English', 'English'],
'grade': [85, 90, 75, 95, 80, 90]
}
df = pd.DataFrame(data)
grouped = df.groupby('subject')
filtered_df = grouped.apply(lambda x: x[x['grade'] == x['grade'].max()])
print(filtered_df)
输出结果为:
name subject grade
subject
English 3 Charlie English 95
Math 1 Bob Math 90
上述代码中,我们使用groupby()函数将DataFrame按照科目分组。然后,使用apply()函数将lambda函数应用于每个分组,根据返回的布尔值筛选出成绩最高的学生。
以上就是一些使用apply()函数进行条件筛选的例子。通过apply()函数,我们可以对数据进行条件判断,并基于判断结果筛选出符合条件的数据。
