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

如何按分类列分组计算DataFrame各分组数值的平均值?

pandas按name分组计算value列平均值的实现

针对你的两列DataFrame场景,直接用pandas内置的分组聚合逻辑就能实现,不需要手动提前去重name列,分组操作会自动将相同name的行归为同一类做统计。

最推荐的标准写法

这个写法输出结构最规整,可读性最高:

import pandas as pd

# df是你存储原始数据的DataFrame变量
avg_result = df.groupby('name', as_index=False)['value'].mean()

参数说明:

  • as_index=False:分组使用的name列会作为普通列保留在结果中,不会被设为结果表的行索引,和原始表的列结构保持一致
  • ['value'].mean():指定对每个name分组下的value列计算算术平均值,默认会自动跳过列中的空值不参与计算

用你给出的样例数据测试,name为a的两行value分别是5和3,最终计算得到的平均值为4,符合预期;仅出现一次的name(比如样例里的b、c),计算结果就是其对应的value本身。

其他可选写法

如果你不介意name列暂时作为结果的行索引,可以用更简短的写法:

avg_result = df.groupby('name')['value'].mean()

如果后续需要把索引转回普通列,链式调用reset_index()即可:

avg_result = df.groupby('name')['value'].mean().reset_index()

扩展场景

如果你需要同时对每个name计算多个统计指标(比如平均值、总和、数据条数),可以用agg方法传入多个统计函数:

# 一次性得到每个name对应的value平均值、求和值、样本计数
multi_stat_result = df.groupby('name', as_index=False)['value'].agg(['mean', 'sum', 'count'])

内容的提问来源于stack exchange,提问作者Carlos Castanos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:24:12