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

如何用Pandas的groupby与agg自定义生成rabbit计算列?

按ITEM分组计算多列的中位数、标准差及自定义指标rabbit

需求说明

按ITEM字段分组后,为col1、col2、col3三列分别计算以下三个指标:

  • 中位数(median)
  • 标准差(std)
  • rabbit:对应列的均值 + 4倍标准差

实现代码

import pandas as pd

# 原始数据
data = {'ITEM': ['a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd', 'z', 'z', 'z', 'z'],
        'col1': [37, 84, 54, 72, 49, 20, 64, 75, 90, 71, 84, 46, 78, 24, 34],
        'col2': [27, 44, 43, 12, 92, 10, 24, 55, 50, 37, 44, 57, 38, 64, 17],
        'col3': [17, 54, 64, 68, 39, 50, 34, 65, 40, 72, 44, 56, 48, 94, 37], }
df = pd.DataFrame(data)

# 定义rabbit指标的计算函数
def rabbit_calc(x):
    return x.mean() + 4 * x.std()

# 分组聚合计算所有指标
result = df.groupby('ITEM').agg({
    'col1': ['median', 'std', rabbit_calc],
    'col2': ['median', 'std', rabbit_calc],
    'col3': ['median', 'std', rabbit_calc]
})

# 重命名多级列名,提升可读性
result.columns = ['_'.join(col) for col in result.columns]
print(result)

代码说明

  1. 先将原始字典数据转换为pandas的DataFrame,这是数据处理的基础操作
  2. 自定义rabbit_calc函数,接收分组后的单列数据,按需求计算均值加4倍标准差
  3. 使用groupby('ITEM').agg()实现分组聚合,每个列对应传入三个计算方法(内置的median、std,以及自定义函数)
  4. 最后将默认的多级列名重命名为列名_指标名的格式,方便查看结果

示例输出(部分)

col1_median   col1_std  col1_rabbit_calc  col2_median   col2_std  col2_rabbit_calc  col3_median   col3_std  col3_rabbit_calc
ITEM                                                                                                                              
a            54.0  18.547237        129.088948         43.0  30.724583        200.898331         54.0  20.736442        136.945768
b            64.0  27.531800        149.127201         24.0  22.781572        115.126288         50.0  15.968720        113.874881

内容的提问来源于stack exchange,提问作者888Seeme

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 16:14:57