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中使用pyhook实现键盘监控的例子
Jul 18 Python
Python聚类算法之凝聚层次聚类实例分析
Nov 20 Python
使用Python读写及压缩和解压缩文件的示例
Jul 08 Python
Queue 实现生产者消费者模型(实例讲解)
Nov 13 Python
python 递归深度优先搜索与广度优先搜索算法模拟实现
Oct 22 Python
使用python打印十行杨辉三角过程详解
Jul 10 Python
Pytorch中膨胀卷积的用法详解
Jan 07 Python
python计算二维矩形IOU实例
Jan 18 Python
PyTorch笔记之scatter()函数的使用
Feb 12 Python
浅谈Python 参数与变量
Jun 20 Python
python利用os模块编写文件复制功能——copy()函数用法
Jul 13 Python
一文搞懂python异常处理、模块与包
Jun 26 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生成带有雪花背景的验证码
2006/10/09 PHP
php命名空间学习详解
2014/02/27 PHP
php中stream(流)的用法
2014/03/25 PHP
php中解析带中文字符的url函数分享
2015/01/20 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
2016/09/23 PHP
Laravel框架实现的批量删除功能示例
2019/01/16 PHP
基于jquery实现表格内容筛选功能实例解析
2016/05/09 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
2016/07/12 Javascript
Jquery on绑定的事件 触发多次实例代码
2016/12/08 Javascript
用js制作淘宝放大镜效果
2020/10/28 Javascript
Vue.js基础学习之class与样式绑定
2017/03/20 Javascript
react-native android状态栏的实现
2018/06/15 Javascript
vue.js轮播图组件使用方法详解
2018/07/03 Javascript
Bootstrap导航菜单点击后无法自动添加active的处理方法
2018/08/10 Javascript
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
JS前端面试必备——基本排序算法原理与实现方法详解【插入/选择/归并/冒泡/快速排序】
2020/02/24 Javascript
JS内置对象和Math对象知识点详解
2020/04/03 Javascript
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
python使用reportlab实现图片转换成pdf的方法
2015/05/22 Python
基于Python实现通过微信搜索功能查看谁把你删除了
2016/01/27 Python
Python实现SMTP发送邮件详细教程
2021/03/02 Python
python3监控CentOS磁盘空间脚本
2018/06/21 Python
python简单操作excle的方法
2018/09/12 Python
Python3爬虫之自动查询天气并实现语音播报
2019/02/21 Python
在pycharm中实现删除bookmark
2020/02/14 Python
基于python3生成标签云代码解析
2020/02/18 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
2020/05/26 Python
tensorflow之读取jpg图像长和宽实例
2020/06/18 Python
浅析python实现动态规划背包问题
2020/12/31 Python
HTML5拍照和摄像机功能实战详解
2019/01/24 HTML / CSS
GNC健安喜官方海外旗舰店:美国著名保健品牌
2017/01/04 全球购物
JD Sports马来西亚:英国领先的运动鞋和运动服饰零售商
2018/03/13 全球购物
历史教育专业个人求职信
2013/12/13 职场文书
法人代表证明书
2014/09/18 职场文书
离婚纠纷代理词
2015/05/23 职场文书
解析Java异步之call future
2021/06/14 Java/Android