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 fileinput模块使用实例
Jun 03 Python
python脚本监控docker容器
Apr 27 Python
python中获得当前目录和上级目录的实现方法
Oct 12 Python
对python读取zip压缩文件里面的csv数据实例详解
Feb 08 Python
[机器视觉]使用python自动识别验证码详解
May 16 Python
python的pytest框架之命令行参数详解(上)
Jun 27 Python
pandas基于时间序列的固定时间间隔求均值的方法
Jul 04 Python
Python实现蒙特卡洛算法小实验过程详解
Jul 12 Python
深入了解Django View(视图系统)
Jul 23 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
May 13 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
Oct 26 Python
pandas提升计算效率的一些方法汇总
May 30 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
探讨捕获php错误信息方法的详解
2013/06/09 PHP
PHP网站开发中常用的8个小技巧
2015/02/13 PHP
php实现xml与json之间的相互转换功能实例
2016/07/07 PHP
php封装的图片(缩略图)处理类完整实例
2016/10/19 PHP
降低PHP Redis内存占用
2017/03/23 PHP
javascript 出生日期和身份证判断大全
2008/11/13 Javascript
js中方法重载如何实现?以及函数的参数问题
2013/08/01 Javascript
兼容主流浏览器的jQuery+CSS 实现遮罩层的简单代码
2014/10/14 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
2015/08/15 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
2015/11/24 Javascript
JS实用技巧小结(屏蔽错误、div滚动条设置、背景图片位置等)
2016/06/16 Javascript
Bootstrap Table使用心得总结
2016/11/29 Javascript
基于react框架使用的一些细节要点的思考
2017/05/31 Javascript
Angular使用Md5加密的解决方法
2017/09/16 Javascript
微信小程序和H5页面间相互跳转代码实例
2019/09/19 Javascript
微信小程序实现音乐播放器
2019/11/20 Javascript
[02:34]肉山说——泡妞篇
2014/09/16 DOTA
Python实现的二维码生成小软件
2014/07/11 Python
python中利用h5py模块读取h5文件中的主键方法
2018/06/05 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
Python实现爬取马云的微博功能示例
2019/02/16 Python
Python向excel中写入数据的方法
2019/05/05 Python
对python3.4 字符串转16进制的实例详解
2019/06/12 Python
python通过链接抓取网站详解
2019/11/20 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
2020/06/09 Python
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
乐天旅游台湾网站:Rakuten Travel TW
2017/06/01 全球购物
Linux常见面试题
2016/10/04 面试题
即将毕业大学生自荐信
2014/01/24 职场文书
公司股权转让协议书
2014/04/12 职场文书
节约用水倡议书
2014/04/16 职场文书
售房委托书
2014/08/30 职场文书
2014年职称评定工作总结
2014/11/26 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
给老婆的保证书
2015/01/16 职场文书
小学运动会入场口号
2015/12/24 职场文书