如何使用Python pandas获取每个分组中值最大的行
Pandas 分组取最大值对应行实现方案
你按ex字段完成分组的DataFrame预览如下:
以下是经过验证的可用方法,根据你的需求选择即可:
场景1:每个分组只保留第一条匹配最大值的行(性能最优,大数据量优先选)
用idxmax()直接定位每个分组目标列最大值对应的原表索引,再通过loc取整行:# 把「target_col」替换成你要对比最大值的实际列名,比如你要取count列最大值就填'count' result = df.loc[df.groupby('ex')['target_col'].idxmax()]注意:不要直接用
df.groupby('ex').max(),该方法会对每列单独取最大值拼接,返回的行不一定是原表中真实存在的记录,会出现列值错配。场景2:每个分组保留所有值等于最大值的行(同组最大值有多条时全部返回)
用transform('max')给同组所有行打上该组最大值的标记,再做等值过滤:# 同样替换「target_col」为你的实际对比列名 result = df[df.groupby('ex')['target_col'].transform('max') == df['target_col']]如果你已经提前生成了GroupBy对象(比如存为
g = df.groupby('ex')),直接在g上调用上述方法即可,不需要重复执行分组逻辑。
内容的提问来源于stack exchange,提问作者Quang Minh Vu
相关产品推荐
相关产品推荐

