欢迎访问宙启技术站
智能推送

在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()函数,我们可以对数据进行条件判断,并基于判断结果筛选出符合条件的数据。