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

如何在pandas中通过groupby基于指定列最大值获取整行数据

解决Pandas分组后取指定列最大值对应整行的问题

你遇到的问题是groupby.max()的默认行为——它会对分组后的每一列单独计算最大值,而不是找到指定列(这里是Number)最大值所在的完整行。咱们来修正这个逻辑:

正确实现代码

import pandas as pd
data = {
 'Number':[12,55,3,2,88,17],
 'People':['Zack','Zack','Merry','Merry','Cross','Cross'],
 'Random':[353,0.5454,0.5454336,32,-7,4]
}
df = pd.DataFrame(data, columns=['Number','People','Random'])
print("原始数据:")
print(df,'
')

# 核心步骤:找到每个People分组中Number最大的行的索引,再提取整行
max_rows = df.loc[df.groupby('People')['Number'].idxmax()]
# 设置People为索引,匹配你想要的格式
max_rows = max_rows.set_index('People')
print("期望结果:")
print(max_rows)

运行结果

原始数据:
   Number  People     Random
0      12    Zack  353.000000
1      55    Zack    0.545400
2       3   Merry    0.545434
3       2   Merry   32.000000
4      88   Cross   -7.000000
5      17   Cross    4.000000

期望结果:
          Number     Random
People                     
Cross         88   -7.000000
Merry          3    0.545434
Zack          55  353.000000

逻辑解释

  1. df.groupby('People')['Number'].idxmax():对每个People分组,定位Number列最大值对应的行索引(比如Cross组里Number=88的行索引是4)。
  2. df.loc[索引列表]:根据这些索引提取完整行,确保拿到的是每个分组中Number最大的那一行的所有数据,而非各列单独取最大值拼接的结果。

内容的提问来源于stack exchange,提问作者Arka-cell

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 19:52:27