pandas:GroupBy .pipe() 与 .apply()

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

在处理数据分组时,pandas库提供了许多功能强大的方法。其中两个常用的方法是GroupBy的.pipe()和.apply()函数。这两个函数可以帮助我们在处理数据分组时更加方便和高效。

GroupBy .pipe()

.pipe()函数可以将一个方法应用于GroupBy对象的每个分组。通过使用.pipe()函数,我们可以将数据分组后的操作链式地应用于每个分组。

例如,假设我们有一个包含学生信息的数据集,其中包括学生的姓名、年龄和成绩。我们想要计算每个年龄段的平均成绩。我们可以使用.pipe()函数来完成这个任务。

python

import pandas as pd

# 创建包含学生信息的数据集

data = {'Name': ['Tom', 'Nick', 'John', 'Tom', 'Nick', 'John'],

'Age': [18, 19, 18, 20, 19, 20],

'Score': [80, 85, 90, 95, 92, 88]}

df = pd.DataFrame(data)

# 按年龄分组,并计算平均成绩

avg_score_by_age = df.groupby('Age').pipe(lambda x: x.mean())

print(avg_score_by_age)

以上代码中,我们首先使用.groupby()函数按年龄分组数据集。然后使用.pipe()函数将.mean()方法应用于每个分组,计算每个年龄段的平均成绩。最后,我们打印出结果。

GroupBy .apply()

.apply()函数是另一个常用的GroupBy方法,它可以将一个自定义函数应用于每个分组。通过使用.apply()函数,我们可以对每个分组进行更加灵活和个性化的操作。

接下来,我们以同样的学生信息数据集为例,演示如何使用.apply()函数来计算每个年龄段的最高成绩。

python

import pandas as pd

# 创建包含学生信息的数据集

data = {'Name': ['Tom', 'Nick', 'John', 'Tom', 'Nick', 'John'],

'Age': [18, 19, 18, 20, 19, 20],

'Score': [80, 85, 90, 95, 92, 88]}

df = pd.DataFrame(data)

# 按年龄分组,并计算最高成绩

max_score_by_age = df.groupby('Age').apply(lambda x: x['Score'].max())

print(max_score_by_age)

以上代码中,我们使用.groupby()函数按年龄分组数据集。然后使用.apply()函数将一个自定义的lambda函数应用于每个分组。这个lambda函数计算每个分组的最高成绩。最后,我们打印出结果。

以上就是使用GroupBy .pipe()和.apply()函数的简单案例。通过使用这两个函数,我们可以更加方便和灵活地处理数据分组,并进行个性化的操作。

.pipe()函数可以将一个方法应用于GroupBy对象的每个分组,而.apply()函数可以将一个自定义函数应用于每个分组。这两个函数为我们在处理数据分组时提供了更多的控制和便利性。