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

如何对Pandas DataFrame按itemid分组并对不同列应用聚合规则

Pandas按itemid分组实现指定聚合计算

直接通过groupby配合agg方法就能实现需求,代码示例如下:

import pandas as pd

# 原始数据构造(如果已有DataFrame可跳过此步)
raw_data = {
    'itemid': ['A1', 'A2', 'B1', 'B2', 'A1', 'A2', 'B1', 'B2'],
    'clock': ['27/05/2021', '27/05/2021', '27/05/2021', '27/05/2021', 
              '28/05/2021', '28/05/2021', '28/05/2021', '28/05/2021'],
    'value_min': [4, 4, 1, 3, 8, 1, 0, 4],
    'value_avg': [7, 5, 2, 20, 8, 2, 1, 7],
    'value_max': [38, 15, 5, 86, 9, 5, 2, 8],
    'item_type': ['cpu', 'mem', 'cpu', 'mem', 'cpu', 'mem', 'cpu', 'mem']
}
df = pd.DataFrame(raw_data)

# 核心分组聚合逻辑
aggregated_df = df.groupby('itemid').agg(
    value_min=('value_min', 'min'),
    value_avg=('value_avg', lambda x: round(x.mean(), 1)),
    value_max=('value_max', 'max'),
    item_type=('item_type', 'first')
).reset_index()

# 可选:将平均值的小数点替换为逗号,匹配目标格式
aggregated_df['value_avg'] = aggregated_df['value_avg'].astype(str).replace('\.', ',', regex=True)

print(aggregated_df)

代码说明

  • groupby('itemid'):以itemid为分组依据
  • agg()方法定义各列的聚合规则:
    • value_min:取分组内最小值
    • value_avg:计算分组内平均值并保留1位小数,之后替换小数点为逗号(若不需要此格式可省略替换步骤)
    • value_max:取分组内最大值
    • item_type:由于每个itemid对应唯一的类型,直接取分组内第一个值即可
  • reset_index():将分组后的itemid从索引恢复为普通列

运行后得到的结果与目标DataFrame完全一致。

内容的提问来源于stack exchange,提问作者JB Rolland

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:16:07