如何在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
逻辑解释
df.groupby('People')['Number'].idxmax():对每个People分组,定位Number列最大值对应的行索引(比如Cross组里Number=88的行索引是4)。df.loc[索引列表]:根据这些索引提取完整行,确保拿到的是每个分组中Number最大的那一行的所有数据,而非各列单独取最大值拼接的结果。
内容的提问来源于stack exchange,提问作者Arka-cell
相关产品推荐
相关产品推荐

