pandas获取groupby分组里最大值所在的行方法


Posted in Python onApril 20, 2018

pandas获取groupby分组里最大值所在的行方法

如下面这个DataFrame,按照Mt分组,取出Count最大的那行

import pandas as pd
df = pd.DataFrame({'Sp':['a','b','c','d','e','f'], 'Mt':['s1', 's1', 's2','s2','s2','s3'], 'Value':[1,2,3,4,5,6], 'Count':[3,2,5,10,10,6]})

df

Count Mt Sp Value
0 3 s1 a 1
1 2 s1 b 2
2 5 s2 c 3
3 10 s2 d 4
4 10 s2 e 5
5 6 s3 f 6

方法1:在分组中过滤出Count最大的行

df.groupby('Mt').apply(lambda t: t[t.Count==t.Count.max()])

Count Mt Sp Value
Mt
s1 0 3 s1 a 1
s2 3 10 s2 d 4
4 10 s2 e 5
s3 5 6 s3 f 6

方法2:用transform获取原dataframe的index,然后过滤出需要的行

print df.groupby(['Mt'])['Count'].agg(max)

idx=df.groupby(['Mt'])['Count'].transform(max)
print idx
idx1 = idx == df['Count']
print idx1

df[idx1]
Mt
s1 3
s2 10
s3 6
Name: Count, dtype: int64
0 3
1 3
2 10
3 10
4 10
5 6
dtype: int64
0 True
1 False
2 False
3 True
4 True
5 True
dtype: bool

Count Mt Sp Value
0 3 s1 a 1
3 10 s2 d 4
4 10 s2 e 5
5 6 s3 f 6

上面的方法都有个问题是3、4行的值都是最大值,这样返回了多行,如果只要返回一行呢?

方法3:idmax(旧版本pandas是argmax)

idx = df.groupby('Mt')['Count'].idxmax()
print idx
df.iloc[idx]
Mt
s1 0
s2 3
s3 5
Name: Count, dtype: int64

Count Mt Sp Value
0 3 s1 a 1
3 10 s2 d 4
5 6 s3 f 6
df.iloc[df.groupby(['Mt']).apply(lambda x: x['Count'].idxmax())]

Count Mt Sp Value
0 3 s1 a 1
3 10 s2 d 4
5 6 s3 f 6
def using_apply(df):
 return (df.groupby('Mt').apply(lambda subf: subf['Value'][subf['Count'].idxmax()]))

def using_idxmax_loc(df):
 idx = df.groupby('Mt')['Count'].idxmax()
 return df.loc[idx, ['Mt', 'Value']]

print using_apply(df)

using_idxmax_loc(df)
Mt
s1 1
s2 4
s3 6
dtype: int64

Mt Value
0 s1 1
3 s2 4
5 s3 6

方法4:先排好序,然后每组取第一个

df.sort('Count', ascending=False).groupby('Mt', as_index=False).first()

Mt Count Sp Value
0 s1 3 a 1
1 s2 10 d 4
2 s3 6 f 6

那问题又来了,如果不是要取出最大值所在的行,比如要中间值所在的那行呢?

思路还是类似,可能具体写法上要做一些修改,比如方法1和2要修改max算法,方法3要自己实现一个返回index的方法。 不管怎样,groupby之后,每个分组都是一个dataframe。

以上这篇pandas获取groupby分组里最大值所在的行方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现读取邮箱中的邮件功能示例【含文本及附件】
Aug 05 Python
Python 元类实例解析
Apr 04 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
Sep 17 Python
python学生信息管理系统(完整版)
Apr 05 Python
django解决跨域请求的问题详解
Jan 20 Python
python自动发送测试报告邮件功能的实现
Jan 22 Python
Python的形参和实参使用方式
Dec 24 Python
Pycharm中Python环境配置常见问题解析
Jan 16 Python
TensorFlow MNIST手写数据集的实现方法
Feb 05 Python
Python爬虫如何应对Cloudflare邮箱加密
Jun 24 Python
Python自动化操作实现图例绘制
Jul 09 Python
python 装饰器的基本使用
Jan 13 Python
pandas多级分组实现排序的方法
Apr 20 #Python
Python PyQt4实现QQ抽屉效果
Apr 20 #Python
Python在groupby分组后提取指定位置记录方法
Apr 20 #Python
PyQt实现界面翻转切换效果
Apr 20 #Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
Apr 20 #Python
python3 pandas 读取MySQL数据和插入的实例
Apr 20 #Python
PyQt5每天必学之事件与信号
Apr 20 #Python
You might like
PHP注释实例技巧
2008/10/03 PHP
php设计模式 Adapter(适配器模式)
2011/06/26 PHP
探讨:php中在foreach中使用foreach ($arr as &$value) 这种类型的解释
2013/06/24 PHP
CI(CodeIgniter)框架中的增删改查操作
2014/06/10 PHP
PHP中__set()实例用法和基础讲解
2019/07/23 PHP
javascript学习网址备忘
2007/05/29 Javascript
基于jQuery的可用于选项卡及幻灯的切换插件
2011/03/28 Javascript
Jquery为单选框checkbox绑定单击click事件
2012/12/18 Javascript
JavaScript中reduce()方法的使用详解
2015/06/09 Javascript
AngularJS实现表单手动验证和表单自动验证
2015/12/09 Javascript
jQuery+CSS实现滑动的标签分栏切换效果
2015/12/17 Javascript
Vue 短信验证码组件开发详解
2017/02/14 Javascript
js实现自动图片轮播代码
2017/03/22 Javascript
简单实现js上传文件功能
2017/08/21 Javascript
JS库中的Particles.js在vue上的运用案例分析
2017/09/13 Javascript
JS+jQuery实现注册信息的验证功能
2017/09/26 jQuery
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
2018/01/07 Javascript
浅析js中mvvm模式实现的原理
2018/10/06 Javascript
vue slot与传参实例代码讲解
2019/04/28 Javascript
[59:07]海涛为你详解DOTA2新版本“贤哲秘契”
2014/11/22 DOTA
python中的计时器timeit的使用方法
2017/10/20 Python
python多线程之事件Event的使用详解
2018/04/27 Python
python实现读Excel写入.txt的方法
2018/04/29 Python
python验证码识别教程之利用滴水算法分割图片
2018/06/05 Python
django认证系统实现自定义权限管理的方法
2019/08/28 Python
Python实现字符串中某个字母的替代功能
2019/10/21 Python
Fanatics官网:运动服装、球衣、运动装备
2020/10/12 全球购物
安全责任协议书
2014/04/21 职场文书
保护野生动物倡议书
2014/05/16 职场文书
幼儿园课题方案
2014/06/09 职场文书
淘宝客服工作职责
2014/07/11 职场文书
写给老师的感谢信
2015/01/20 职场文书
学校捐书活动总结
2015/05/08 职场文书
母婴行业实体、电商模式全面解析
2019/08/01 职场文书
python 爬取哔哩哔哩up主信息和投稿视频
2021/06/07 Python
spring boot项目application.properties文件存放及使用介绍
2021/06/30 Java/Android