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语言的面相对象编程方式初步学习
Mar 12 Python
python实现逻辑回归的方法示例
May 02 Python
Python中enumerate()函数编写更Pythonic的循环
Mar 06 Python
Python实现修改IE注册表功能示例
May 10 Python
python检索特定内容的文本文件实例
Jun 05 Python
Python画柱状统计图操作示例【基于matplotlib库】
Jul 04 Python
win8下python3.4安装和环境配置图文教程
Jul 31 Python
python使用matplotlib模块绘制多条折线图、散点图
Apr 26 Python
对python中Librosa的mfcc步骤详解
Jan 09 Python
Tensorflow进行多维矩阵的拆分与拼接实例
Feb 07 Python
完美处理python与anaconda环境变量的冲突问题
Apr 07 Python
python自动化测试之Selenium详解
Mar 13 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处理Json字符串解码返回NULL的解决方法
2014/09/01 PHP
全面了解PHP中的全局变量
2016/06/17 PHP
jscript之Read an Excel Spreadsheet
2007/06/13 Javascript
js 通过cookie实现刷新不变化树形菜单
2014/10/30 Javascript
js改变Iframe中Src的方法
2015/05/05 Javascript
基于JavaScript实现弹出框效果
2016/02/19 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
jQuery判断元素是否显示 是否隐藏的简单实现代码
2016/05/19 Javascript
etmvc+jQuery EasyUI+combobox多值操作实现角色授权实例
2016/11/09 Javascript
js调用屏幕宽度的简单方法
2016/11/14 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
2017/06/15 Javascript
基于Vue的移动端图片裁剪组件功能
2017/11/28 Javascript
Vue侧滑菜单组件——DrawerLayout
2017/12/18 Javascript
JavaScript解决浮点数计算不准确问题的方法分析
2018/07/09 Javascript
webstorm中配置Eslint的两种方式及差异比较详解
2018/10/19 Javascript
小程序云开发实战小结
2018/10/25 Javascript
vue2.0 获取从http接口中获取数据,组件开发,路由配置方式
2019/11/04 Javascript
Node.js web 应用如何封装到Docker容器中
2020/09/01 Javascript
vue监听浏览器原生返回按钮,进行路由转跳操作
2020/09/09 Javascript
[02:51]DOTA2英雄基础教程 艾欧
2014/01/13 DOTA
举例讲解如何在Python编程中进行迭代和遍历
2016/01/19 Python
python中函数传参详解
2016/07/03 Python
在Python中定义一个常量的方法
2018/11/10 Python
python在OpenCV里实现投影变换效果
2019/08/30 Python
安装PyInstaller失败问题解决
2019/12/14 Python
python 实现任务管理清单案例
2020/04/25 Python
俄罗斯披萨、寿司和面食送货到家服务:2 Берега
2019/12/15 全球购物
体育专业个人的求职信范文
2013/09/21 职场文书
甜美蛋糕店创业计划书
2014/01/30 职场文书
企业年会主持词
2014/03/27 职场文书
《陈毅探母》教学反思
2014/05/01 职场文书
大学感恩节活动策划方案
2014/10/11 职场文书
2016教师给学生的毕业寄语
2015/12/04 职场文书
Python基础之tkinter图形化界面学习
2021/04/29 Python
Java图书管理系统,课程设计必用(源码+文档)
2021/06/30 Java/Android