Python在groupby分组后提取指定位置记录方法


Posted in Python onApril 20, 2018

在进行数据分析、数据建模时,我们首先要做的就是对数据进行处理,提取我们需要的信息。下面为大家介绍一些groupby的用法,以便能够更加方便地进行数据处理。

我们往往在使用groupby进行信息提取时,往往是求分组后样本的一些统计量(max、min,var等)。如果现在我们希望取一下分组后样本的第二条记录,倒数第三条记录,这个该如何操作呢?我们可以通过first、last来提取分组后第一条和最后一条样本。但如果我们要取指定位置的样本,就没有现成的函数。需要我们自己去写了。下面我就为大家介绍如何实现上面的功能。

1)数据介绍

action表共有3列:userid、actionType和actionTime,分别代表用户id,用户行为类型和行为发生时间。具体格式如下图所示:

Python在groupby分组后提取指定位置记录方法

2)分组操作

a = action.groupby('userid') 
b = action.groupby('userid')['actionTime'] 
type(a) 
type(b)

分组后我们可以看到a和b的数据类型是DataFrameGroupBy和SeriesGroupBy

Python在groupby分组后提取指定位置记录方法

3)取数操作

①不同用户第二次/倒数第二次操作时间

action.groupby('userid')['actionTime'].apply(lambda i:i.iloc[1] if len(i)>1 else np.nan) 
action.groupby('userid')['actionTime'].apply(lambda i:i.iloc[-2] if len(i)>1 else np.nan)

②不同用户某种行为第二次/倒数第二次操作时间

action[action['actionType']==2].groupby('userid')['actionTime'].apply(lambda i:i.iloc[1] if len(i)>1 else np.nan) 
action[action['actionType']==2].groupby('userid')['actionTime'].apply(lambda i:i.iloc[-2] if len(i)>1 else np.nan)

PS:因为有些用户可能只有一条记录,直接取可能会出错,所以我用if先做判断。

这样我们就可以提取分组后数据任意位置的样本了。

以上这篇Python在groupby分组后提取指定位置记录方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python判断变量是否已经定义的方法
Aug 18 Python
python数据结构链表之单向链表(实例讲解)
Jul 25 Python
python matplotlib中文显示参数设置解析
Dec 15 Python
python ChainMap 合并字典的实现步骤
Jun 11 Python
python射线法判断一个点在图形区域内外
Jun 28 Python
python读取.mat文件的数据及实例代码
Jul 12 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
Feb 15 Python
python实现数字炸弹游戏程序
Jul 17 Python
利用Python实现朋友圈中的九宫格图片效果
Sep 03 Python
五种Python转义表示法
Nov 27 Python
python turtle绘制多边形和跳跃和改变速度特效
Mar 16 Python
python 离散点图画法的实现
Apr 01 Python
PyQt实现界面翻转切换效果
Apr 20 #Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
Apr 20 #Python
python3 pandas 读取MySQL数据和插入的实例
Apr 20 #Python
PyQt5每天必学之事件与信号
Apr 20 #Python
pandas groupby 分组取每组的前几行记录方法
Apr 20 #Python
基于pandas数据样本行列选取的方法
Apr 20 #Python
pandas实现选取特定索引的行
Apr 20 #Python
You might like
main.php
2006/12/09 PHP
thinkphp3.x中session方法的用法分析
2016/05/20 PHP
超酷的网页音乐播放器DewPlayer使用方法
2010/12/18 Javascript
基于jquery的lazy loader插件实现图片的延迟加载[简单使用]
2011/05/07 Javascript
javascript两种function的定义介绍及区别说明
2013/05/02 Javascript
基于socket.io+express实现多房间聊天
2016/03/17 Javascript
jQuery如何获取动态添加的元素
2016/06/24 Javascript
js实现年月日表单三级联动
2020/04/17 Javascript
js 获取html5的data属性实现方法
2017/07/28 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
Js利用console计算代码运行时间的方法示例
2017/09/24 Javascript
vue项目总结之文件夹结构配置详解
2017/12/13 Javascript
关于Angularjs中自定义指令一些有价值的细节和技巧小结
2018/04/22 Javascript
jQuery滑动效果实现方法分析
2018/09/05 jQuery
js字符串处理之绝妙的代码
2019/04/05 Javascript
JS实现可切换图片的幻灯切换效果示例
2019/05/24 Javascript
Vue 3.x+axios跨域方案的踩坑指南
2019/07/04 Javascript
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
2020/04/07 Javascript
[00:32]DOTA2上海特级锦标赛 Ehome战队宣传片
2016/03/03 DOTA
[45:18]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第一场
2018/04/04 DOTA
Python中函数参数设置及使用的学习笔记
2016/05/03 Python
python中nan与inf转为特定数字方法示例
2017/05/11 Python
Python贪心算法实例小结
2018/04/22 Python
python环形单链表的约瑟夫问题详解
2018/09/27 Python
深入了解Python枚举类型的相关知识
2019/07/09 Python
浅谈python之自动化运维(Paramiko)
2020/01/31 Python
python语言time库和datetime库基本使用详解
2020/12/25 Python
美国一家著名的儿童鞋制造商:Stride Rite
2017/01/02 全球购物
便利店的创业计划书
2014/01/15 职场文书
安全生产管理合理化建议书
2014/03/12 职场文书
帮一个朋友写的求职信
2014/08/09 职场文书
初中毕业典礼演讲稿
2014/09/09 职场文书
教师党员个人剖析材料
2014/09/29 职场文书
2015年秋学期师德师风建设工作总结
2015/10/23 职场文书
DSP接收机前端设想
2022/04/05 无线电
Linux中各个目录的作用与内容
2022/06/28 Servers