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实现的udp协议Server和Client代码实例
Jun 04 Python
Python脚本实现网卡流量监控
Feb 14 Python
JSONLINT:python的json数据验证库实例解析
Nov 28 Python
python smtplib发送带附件邮件小程序
May 22 Python
python config文件的读写操作示例
Sep 27 Python
Python3 全自动更新已安装的模块实现
Jan 06 Python
Python sklearn中的.fit与.predict的用法说明
Jun 28 Python
Python偏函数实现原理及应用
Nov 20 Python
python实战之用emoji表情生成文字
May 08 Python
你喜欢篮球吗?Python实现篮球游戏
Jun 11 Python
总结python多进程multiprocessing的相关知识
Jun 29 Python
Python爬虫入门案例之回车桌面壁纸网美女图片采集
Oct 16 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实现根据浏览器跳转不同语言页面代码
2013/08/02 PHP
php实现文件下载(支持中文文名)
2013/12/04 PHP
PHP实现生成数据字典功能示例
2018/05/24 PHP
php实现微信分享朋友链接功能
2019/02/18 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
2019/10/22 PHP
JavaScript数据类型之基本类型和引用类型的值
2015/04/01 Javascript
简介JavaScript中的italics()方法的使用
2015/06/08 Javascript
JavaScript实现的SHA-1加密算法完整实例
2016/02/02 Javascript
移动web开发之touch事件实例详解
2018/01/17 Javascript
axios全局请求参数设置,请求及返回拦截器的方法
2018/03/05 Javascript
深入理解Vue Computed计算属性原理
2018/05/29 Javascript
vue打包的时候自动将px转成rem的操作方法
2018/06/20 Javascript
使用element-ui的el-menu导航选中后刷新页面保持当前选中状态
2019/07/19 Javascript
JavaScript如何获取一个元素的样式信息
2019/07/29 Javascript
[00:32]2018DOTA2亚洲邀请赛iG出场
2018/04/03 DOTA
python实现根据ip地址反向查找主机名称的方法
2015/04/29 Python
Python中的探索性数据分析(功能式)
2017/12/22 Python
python爬虫之线程池和进程池功能与用法详解
2018/08/02 Python
opencv python统计及绘制直方图的方法
2019/01/21 Python
python中pytest收集用例规则与运行指定用例详解
2019/06/27 Python
tensor和numpy的互相转换的实现示例
2019/08/02 Python
Flask框架学习笔记之模板操作实例详解
2019/08/15 Python
详解用Python为直方图绘制拟合曲线的两种方法
2019/08/21 Python
如何基于python生成list的所有的子集
2019/11/11 Python
Python脚本如何在bilibili中查找弹幕发送者
2020/06/04 Python
python tkinter的消息框模块(messagebox,simpledialog)
2020/11/07 Python
如何利用Python matplotlib绘制雷达图
2020/12/21 Python
传统HTML页面实现模块化加载的方法
2018/10/15 HTML / CSS
美国创意礼品网站:UncommonGoods
2017/02/03 全球购物
Pharmacy Online中文直邮网站:澳洲大型药房
2020/06/27 全球购物
介绍一下Make? 为什么使用make
2013/12/08 面试题
文员个人求职自荐信
2013/09/21 职场文书
函授本科毕业生自我鉴定
2013/10/16 职场文书
竞选部长演讲稿
2014/04/26 职场文书
节能标语大全
2014/06/21 职场文书
计算机网络专业自荐信
2014/07/04 职场文书