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

基于Pandas DataFrame按ITEM分组获取对应统计数据的问询

Pandas分组统计与分组数量匹配的实现

要实现按ITEM分组后获取统计数据,且结果行数与分组数完全一致,直接使用Pandas的groupby结合聚合操作即可,以下是具体实现方案:

基础分组统计示例

以计算每个ITEM分组下各统计列的均值、总和为例:

import pandas as pd

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

# 按ITEM分组,对各统计列执行多维度统计
stats_result = df.groupby('ITEM').agg({
    'Stat.1': ['mean', 'sum'],
    'Stat.2': ['mean', 'sum'],
    'Stat.3': ['mean', 'sum']
}).reset_index()

print(stats_result)

核心要点

  • groupby('ITEM')会自动按ITEM的唯一值分组,示例中ITEM有5个唯一值(a、b、c、d、z),最终结果将保留5行分组数据
  • agg()支持为不同列指定不同的统计函数,可同时完成多种统计计算
  • reset_index()将分组键ITEM从索引转为普通列,便于后续的数据处理与查看

自定义统计逻辑实现

如果需要个性化统计规则(比如计算分组内最大值与最小值的差值),可传入自定义函数:

def range_calc(x):
    return x.max() - x.min()

custom_stats = df.groupby('ITEM').agg({
    'Stat.1': range_calc,
    'Stat.2': ['max', 'min'],
    'Stat.3': 'median'
}).reset_index()

print(custom_stats)

无论使用哪种统计方式,最终结果的行数都会与ITEM的分组数量完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 12:30:19