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

多Hgroup不同Max值时,用np.arange和pd.cut计算分组均值

针对多Hgroup分组的分箱均值计算方案

核心思路

按Hgroup分组后,对每个子组单独使用自身的Max_HG_value生成分箱区间,再对LowGroup分箱并计算Value的分组均值。

示例数据构造

先模拟符合需求的DataFrame:

import pandas as pd
import numpy as np

# 构造示例数据
data = {
    'Hgroup': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
    'LowGroup': [5, 15, 25, 35, 10, 20, 30, 40],
    'Value': [100, 200, 300, 400, 150, 250, 350, 450],
    'Max_HG_value': [40, 40, 40, 40, 50, 50, 50, 50]
}
df = pd.DataFrame(data)

实现代码

定义分组处理函数,再通过groupby.apply批量执行:

def calculate_group_mean(group, bin_step=10):
    # 获取当前组的Max值(组内该值唯一,取第一个即可)
    max_val = group['Max_HG_value'].iloc[0]
    # 生成分箱区间:从0到max_val,步长为bin_step
    bins = np.arange(0, max_val + bin_step, bin_step)
    # 给LowGroup打箱标签,左闭右开区间避免边界重复
    group['bin'] = pd.cut(group['LowGroup'], bins=bins, right=False)
    # 计算每个箱的Value均值,重置索引优化结果格式
    return group.groupby('bin')['Value'].mean().reset_index()

# 按Hgroup分组执行逻辑
result = df.groupby('Hgroup').apply(calculate_group_mean)
# 可选:调整索引结构,把Hgroup从索引转为列
result = result.reset_index(level=0).rename(columns={'level_0': 'Hgroup'})

关键细节说明

  • bin_step参数可自定义分箱步长,按需调整粒度
  • 若组内Max_HG_value存在不一致,可先做Hgroup+Max_HG_value的联合分组,确保每个子组对应唯一Max值
  • 存在缺失值时,可在函数内添加group = group.dropna(subset=['LowGroup', 'Value'])过滤无效数据

内容的提问来源于stack exchange,提问作者Gustavo De Leon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 12:02:45