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

分组后如何获取众数列表中的最大值以得到唯一众数?

解决Pandas分组计算众数时取并列最大值的问题

问题场景

按user和session分组计算audio_score列的众数时,若存在多个并列众数,结果会返回列表(如[2,3,4,5]),需要将这类列表替换为其中的最大值,得到单一数值的结果。

当前输出

user  session   mode_score
98    1         5
      2         4
      3         5
      4         5
      5        [2, 3, 4, 5]

期望输出

user  session   mode_score
 98   1         5
      2         4
      3         5
      4         5
      5         5

原代码

df = pd.DataFrame(df[['user', 'session', 'audio_score']].groupby(['user','session'])['audio_score'].agg(pd.Series.mode))

解决方案

自定义聚合函数,处理多众数的情况,直接返回众数中的最大值:

def get_max_mode(series):
    mode_result = series.mode()
    return mode_result.max() if len(mode_result) > 1 else mode_result.iloc[0]

# 执行分组聚合并重置索引
df = df[['user', 'session', 'audio_score']].groupby(['user','session'])['audio_score'].agg(get_max_mode).reset_index()

说明

  • get_max_mode函数先计算当前分组的众数:如果结果包含多个值(并列众数),就取最大值;如果只有一个众数,直接返回该值。
  • 使用reset_index()将分组后的索引转换为普通列,保持输出结构与期望一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:05:50