Pandas使用groupby结合apply对分组后的数据进行自定义函数处理

2023-02-24 00:00:00 函数 自定义 分组

在 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() 函数,对每个分组的数据执行该函数,并将处理结果合并成一个数据框。最后,输出合并后的数据框即可。

相关文章