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

如何将指定Pandas分组聚合代码转为自定义函数?解决返回None问题

解决Pandas分组聚合自定义函数返回None的问题

你的函数返回None的核心原因是没有在函数末尾添加return语句,Pandas的分组聚合操作会生成新的DataFrame,但如果函数不主动返回这个结果,Python会默认返回None。

错误示例(导致返回None)

你可能写出了类似这样的函数:

def agg_monthly(df):
    wkly = (df.groupby(['Year','Month'], as_index=False).agg(
        P_HIGH=('High', 'max'),
        D_HIGH=('High', 'idxmax'),
        P_LOW=('Low', 'min'),
        D_LOW=('Low', 'idxmin')
    ))
# 缺少return语句,函数默认返回None

正确的自定义函数写法

只需要在函数末尾添加return wkly,返回聚合后的DataFrame即可:

def agg_monthly(df):
    wkly = (df.groupby(['Year','Month'], as_index=False).agg(
        P_HIGH=('High', 'max'),
        D_HIGH=('High', 'idxmax'),
        P_LOW=('Low', 'min'),
        D_LOW=('Low', 'idxmin')
    ))
    return wkly

调用函数

使用时直接传入你的DataFrame就能拿到正确结果:

# 替换成你的实际DataFrame
result = agg_monthly(your_dataframe)
print(result)

可选:更灵活的通用聚合函数

如果需要让函数适配不同的分组列和聚合规则,可以把这些做成参数:

def custom_group_agg(df, group_columns, agg_rules):
    return df.groupby(group_columns, as_index=False).agg(**agg_rules)

# 定义聚合规则和分组列
agg_rules = {
    'P_HIGH': ('High', 'max'),
    'D_HIGH': ('High', 'idxmax'),
    'P_LOW': ('Low', 'min'),
    'D_LOW': ('Low', 'idxmin')
}
group_cols = ['Year','Month']

# 调用函数
result = custom_group_agg(your_dataframe, group_cols, agg_rules)

内容的提问来源于stack exchange,提问作者Yogesh Kamboj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 15:48:30