You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何实现接收聚合函数作为参数的DataFrame分组聚合函数?

Python中如何实现接收聚合函数作为参数的DataFrame分组聚合函数?

嗨,我懂你的问题啦!你写的代码里踩了个很常见的Python小坑——你直接用.func()来调用传入的聚合函数,但Python根本认不出这个是你传进来的参数函数,它会把func当成DataFrameGroupBy对象的内置方法,而这个方法其实不存在,所以才会报错。

咱们来修正一下,正确的做法是用pandas分组后的agg()方法(或者apply(),不过agg()更适配聚合场景),把你传入的聚合函数直接传给它就行。这里给你写出符合你最初函数签名的正确版本:

import pandas as pd

def group_and_aggregate_data(df: pd.DataFrame, group_by_column: str, agg_func) -> pd.DataFrame:
    # 用agg()方法传入聚合函数,内置函数、自定义函数都能生效
    grouped_df = df.groupby(group_by_column).agg(agg_func)
    return grouped_df

举个实际使用的例子帮你理解:
假设我们有这样的测试数据:

test_data = {
    'city': ['Beijing', 'Shanghai', 'Beijing', 'Shanghai', 'Guangzhou'],
    'sales': [1000, 1500, 1200, 1800, 900],
    'customers': [50, 75, 60, 90, 45]
}
df = pd.DataFrame(test_data)

我们可以这样调用函数:

  • 传入pandas内置的聚合函数名(字符串形式):
# 计算各城市的销售和客户数的平均值
mean_result = group_and_aggregate_data(df, 'city', 'mean')
print(mean_result)
  • 传入自定义的聚合函数:
# 自定义一个计算最大值减最小值的函数
def calculate_range(x):
    return x.max() - x.min()

range_result = group_and_aggregate_data(df, 'city', calculate_range)
print(range_result)

这样就能完美实现你想要的「按城市分组,然后应用指定聚合函数」的需求啦!

备注:内容来源于stack exchange,提问作者Karina Meriina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 16:24:29