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

分组计算数值列众数遇平局时,如何获取最大值?

解决GroupBy众数平局取最大值的问题

首先注意你的value列是字符串类型且包含NaN,先统一转为数值类型更便于后续计算:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'client_id':['A', 'A', 'A', 'A', 'B', 'B', 'B', 'C'],
    'date':['2019-01-01']*8,
    'value':['2', '2', '1', '1', '3', '3', '1', np.NaN]
})

# 转换value列为数值类型
df['value'] = pd.to_numeric(df['value'])

接下来自定义聚合函数,处理众数平局的场景:当存在多个众数时取最大值,同时处理全为NaN的分组:

def mode_max(x):
    modes = x.mode()
    # 众数为空则返回NaN,否则返回最大的众数
    return modes.max() if not modes.empty else np.nan

最后用GroupBy调用这个自定义函数:

result = df.groupby(['client_id', 'date']).agg({'value': mode_max}).reset_index()
print(result)

最终输出

client_iddatevalue
A2019-01-012.0
B2019-01-013.0
C2019-01-01NaN

这样就实现了平局时取最大众数的需求,同时正确处理了全NaN的分组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:32:06