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

如何在Pandas的groupby操作中保留所有列并获取指定列最大值?

Pandas按ID分组保留academic_level最大值所在行

输入数据

IDacademic_levelsexlocation
1913
1123
2514
2724

期望输出

IDacademic_levelsexlocation
1913
2724

解决方案

方法1:利用groupby+idxmax定位最大值行

通过分组找到每组中academic_level最大值对应的索引,再从原DataFrame中提取这些索引对应的完整行:

import pandas as pd

# 构造输入DataFrame
df = pd.DataFrame({
    'ID': [1, 1, 2, 2],
    'academic_level': [9, 1, 5, 7],
    'sex': [1, 2, 1, 2],
    'location': [3, 3, 4, 4]
})

# 获取每组academic_level最大值的索引
max_row_indices = df.groupby('ID')['academic_level'].idxmax()

# 提取对应行并重置索引
result = df.loc[max_row_indices].reset_index(drop=True)
print(result)

方法2:排序后去重

先按ID升序、academic_level降序排序,再保留每个ID的第一行(即最大值所在行):

result = df.sort_values(by=['ID', 'academic_level'], ascending=[True, False]) \
           .drop_duplicates(subset='ID', keep='first') \
           .reset_index(drop=True)
print(result)

两种方法都能得到期望的输出,可根据实际数据规模和需求选择:方法1逻辑更直接,适合中小数据集;方法2在需要多字段排序时更灵活。

内容的提问来源于stack exchange,提问作者Ramiro Guzmán

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 19:38:16