Pandas使用groupby结合apply对分组后的数据进行自定义函数处理
在 Pandas 中,可以使用 groupby() 函数和 apply() 函数对分组后的数据进行自定义函数的处理。以下是一个示例:
import pandas as pd # 创建数据框 df = pd.DataFrame({ 'group': ['A', 'A', 'B', 'B'], 'value': [1, 2, 3, 4] }) # 使用 groupby 函数和 apply 函数,对每个分组的数据进行平均值计算 result = df.groupby('group').apply(lambda x: x['value'].mean()) # 打印处理结果 print(result)
在上述代码中,groupby() 函数将数据框按照 group 列进行分组,得到两个分组 A 和 B。然后,apply() 函数对每个分组的数据执行 lambda 表达式中的函数,计算 value 列的平均值,并将结果保存到 result 变量中。
如果需要对分组后的数据进行多个操作,可以将多个操作封装在一个自定义函数中,并将该函数传递给 apply() 函数。例如,以下示例将对每个分组的数据进行求和和均值的操作:
import pandas as pd # 创建数据框 df = pd.DataFrame({ 'group': ['A', 'A', 'B', 'B'], 'value1': [1, 2, 3, 4], 'value2': [10, 20, 30, 40] }) # 自定义函数,对每个分组的数据进行求和和均值操作 def process_group(group): group['sum'] = group['value1'] + group['value2'] group['mean'] = group['sum'] / 2 return group # 使用 groupby 函数和 apply 函数,对每个分组的数据进行自定义处理 result = df.groupby('group').apply(process_group) # 打印处理结果 print(result)
在上述代码中,process_group() 函数接收一个分组数据作为参数,对该分组的 value1 和 value2 两列执行求和操作,并将结果保存到 sum 列中。然后,该函数计算 sum 列的平均值,将结果保存到 mean 列中,并返回处理后的分组数据。
apply() 函数将 process_group 函数作为参数传递给 groupby() 函数,对每个分组的数据执行该函数,并将处理结果合并成一个数据框。最后,输出合并后的数据框即可。
相关文章