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使用mysqldb连接数据库操作方法示例详解
Dec 03 Python
Python的装饰器用法学习笔记
Jun 24 Python
浅析Python的web.py框架中url的设定方法
Jul 11 Python
python爬虫入门教程--优雅的HTTP库requests(二)
May 25 Python
python 重定向获取真实url的方法
May 11 Python
详解如何用TensorFlow训练和识别/分类自定义图片
Aug 05 Python
python制作朋友圈九宫格图片
Nov 03 Python
JupyterNotebook 输出窗口的显示效果调整方法
Apr 13 Python
Python定时从Mysql提取数据存入Redis的实现
May 03 Python
Python模拟登录和登录跳转的参考示例
Oct 30 Python
如何用python实现一个HTTP连接池
Jan 14 Python
python 模块重载的五种方法
Apr 24 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
fleaphp下不确定的多条件查询的巧妙解决方法
2008/09/11 PHP
PHP注释实例技巧
2008/10/03 PHP
php jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
2014/04/10 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
2014/06/27 PHP
php遍历目录下文件并按修改时间排序操作示例
2019/07/12 PHP
JavaScript去除空格的三种方法(正则/传参函数/trim)
2013/02/06 Javascript
浅谈javascript的调试
2015/01/28 Javascript
javascript内置对象操作详解
2015/02/04 Javascript
nodejs事件的监听与触发的理解分析
2015/02/12 NodeJs
JavaScript把数组作为堆栈使用的方法
2015/03/20 Javascript
jquery.validate 自定义验证方法及validate相关参数
2016/01/18 Javascript
jquery+css3实现会动的小圆圈效果
2016/01/27 Javascript
JavaScript File API实现文件上传预览
2016/02/02 Javascript
jQuery验证插件validate使用详解
2016/05/11 Javascript
javascript RegExp 使用说明
2016/05/21 Javascript
JavaScript模板引擎Template.js使用详解
2016/12/15 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
js tab栏切换代码实例解析
2019/09/03 Javascript
世界上最短的数字判断js代码
2019/09/09 Javascript
解决React在安装antd之后出现的Can't resolve './locale'问题(推荐)
2020/05/03 Javascript
python基础教程之Hello World!
2014/08/29 Python
Python常用模块介绍
2014/11/21 Python
Python的GUI框架PySide的安装配置教程
2016/02/16 Python
Python tkinter事件高级用法实例
2018/01/31 Python
django 快速启动数据库客户端程序的方法示例
2019/08/16 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
2019/09/25 Python
Python3 mmap内存映射文件示例解析
2020/03/23 Python
Python基于numpy模块实现回归预测
2020/05/14 Python
如何查询Oracle数据库中已经创建的索引
2013/10/11 面试题
new修饰符是起什么作用
2015/06/28 面试题
党的群众路线教育实践活动督导组工作情况汇报
2014/10/28 职场文书
红与黑读书笔记
2015/06/29 职场文书
企业安全隐患排查治理制度
2015/08/05 职场文书
五年级作文之学校的四季
2019/12/05 职场文书
python非标准时间的转换
2021/07/25 Python