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

如何在Pandas中按Hr分组后获取对应最高Freq的Loc值?

按Hr分组获取对应最高Freq的Loc值解决方案

你现有一个以Hr为索引的Pandas DataFrame,包含Loc和Freq列,共约5000行。需要按Hr分组,提取每组中Freq(频率)最高的对应Loc值,同时保留Hr、Loc、Freq三列数据。

之前执行的location.groupby(['Hr'])['Freq'].max()仅能得到每组的最高Freq值,无法关联对应的Loc,可以用以下几种方法实现需求:

方法一:利用idxmax定位最大值行

idxmax会返回每组中Freq最大值对应的原DataFrame索引,通过loc即可提取完整行数据:

# 获取每组Freq最大值对应的行索引
max_freq_indices = location.groupby('Hr')['Freq'].idxmax()
# 提取对应行,保留所有列
result = location.loc[max_freq_indices].reset_index(drop=False)

执行后result即为包含Hr、Loc、Freq的目标结果,每组仅保留Freq最大的一行。

方法二:排序后取每组首行

先按Hr升序、Freq降序排序,再取每组第一行:

# 按Hr分组内的Freq降序排列,取每组第一行
result = location.sort_values(by=['Hr', 'Freq'], ascending=[True, False])\
                .groupby('Hr').head(1)\
                .reset_index(drop=False)

这种方法逻辑直观,同样能得到每组Freq最高的行数据。

方法三:保留所有最大值行(多值情况)

如果存在同一Hr组内多个Loc的Freq同为最大值的情况,可使用transform筛选所有符合条件的行:

# 计算每组的最大Freq值
max_freq_per_group = location.groupby('Hr')['Freq'].transform('max')
# 筛选出所有Freq等于组内最大值的行
result = location[location['Freq'] == max_freq_per_group].reset_index(drop=False)

此方法会保留每组中所有Freq为最大值的行,适合需要完整展示所有极值数据的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 21:15:12