You need to enable JavaScript to run this app. Pandas:从按名称排序的DataFrame中提取名称去重的平均分数据
优惠活动
大模型
产品
解决方案
定价
更多

Pandas:从按名称排序的DataFrame中提取名称去重的平均分数据

按Name分组计算score平均值生成新DataFrame实现

基础通用实现

对于已有的两列结构DataFrame,最稳妥的实现是直接使用Pandas内置的分组聚合逻辑,哪怕原表没有提前按Name排序也能正常运行,完全匹配生成新表的要求:

new_df = original_df.groupby("Name", as_index=False)["score"].mean()

这里设置as_index=False是为了避免将Name列转为索引,直接将其保留为普通列,最终输出的结果中Name列天然无重复,score列的值就是对应Name在原表中所有分数的算术平均值。

已排序大表的优化实现

因为原数据已经完成排序,所有相同Name的行都是连续排列的,可以通过给groupby增加sort=False参数跳过内部的全表分组排序步骤,在百万行以上的大表场景下可以大幅提升计算速度,同时生成的新表Name顺序和原表中首次出现的顺序完全一致:

new_df = original_df.groupby("Name", as_index=False, sort=False)["score"].mean()

常见调整说明

  • 由于原score是整型,求平均后得到的score列会自动转为浮点型,如果需要控制保留的小数位数,可以在mean计算后追加round()方法,比如保留2位小数的写法为.round(2)
  • 不需要额外对结果做去重操作,分组聚合的逻辑本身就会让每个Name仅对应一行记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 21:36:04