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 相关文章推荐
通过数据库向Django模型添加字段的示例
Jul 21 Python
python如何在终端里面显示一张图片
Aug 17 Python
python安装教程 Pycharm安装详细教程
May 02 Python
python中实现指定时间调用函数示例代码
Sep 08 Python
Python2与python3中 for 循环语句基础与实例分析
Nov 20 Python
Python各类图像库的图片读写方式总结(推荐)
Feb 23 Python
python列表list保留顺序去重的实例
Dec 14 Python
Python 类属性与实例属性,类对象与实例对象用法分析
Sep 20 Python
Python3 集合set入门基础
Feb 10 Python
Python基础之字符串常见操作经典实例详解
Feb 26 Python
浅谈Django前端后端值传递问题
Jul 15 Python
Python faker生成器生成虚拟数据代码实例
Jul 20 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
mysql中存储过程、函数的一些问题
2007/02/14 PHP
php 表单验证实现代码
2009/03/10 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
2013/10/25 PHP
javascript之锁定表格栏位
2007/06/29 Javascript
event对象的方法 兼容多浏览器
2009/06/27 Javascript
javascript 动态table添加colspan\rowspan 参数的方法
2009/07/25 Javascript
ExtJs扩展之GroupPropertyGrid代码
2010/03/05 Javascript
Javascript的一种模块模式
2010/09/08 Javascript
在IE浏览器中resize事件执行多次的解决方法
2011/07/12 Javascript
JSON+JavaScript处理JSON的简单例子
2013/03/20 Javascript
jQuery实现动画效果的实例代码
2013/05/07 Javascript
jquery果冻抖动效果实现方法
2015/01/15 Javascript
js验证身份证号有效性并提示对应信息
2015/10/19 Javascript
javascript获取图片的top N主色值方法详解
2018/01/26 Javascript
JavaScript使用递归和循环实现阶乘的实例代码
2018/08/28 Javascript
JS实现iframe中子父页面跨域通讯的方法分析
2020/03/10 Javascript
vue 使用rules对表单字段进行校验的步骤
2020/12/25 Vue.js
JS数组索引检测中的数据类型问题详解
2021/01/11 Javascript
Python的批量远程管理和部署工具Fabric用法实例
2015/01/23 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
pygame游戏之旅 添加游戏介绍
2018/11/20 Python
Python 为什么推荐蛇形命名法原因浅析
2020/06/18 Python
python搜索算法原理及实例讲解
2020/11/18 Python
css3实现信纸/同学录效果的示例代码
2018/12/11 HTML / CSS
旅游管理专业生自荐信范文
2014/01/02 职场文书
商务日语专业的自荐信
2014/05/23 职场文书
党员评议个人总结
2014/10/20 职场文书
2014年办公室人员工作总结
2014/12/09 职场文书
2015年项目工作总结
2015/04/29 职场文书
幼儿园新生开学寄语
2015/05/27 职场文书
欠条范文
2015/07/03 职场文书
跳高加油稿
2015/07/21 职场文书
会议承办单位欢迎词
2015/09/30 职场文书
win11无法添加打印机怎么办? 提示windows无法打开添加打印机的解决办法
2022/04/05 数码科技
python双向链表实例详解
2022/05/25 Python
Apache Kafka 分区重分配的实现原理解析
2022/07/15 Servers