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 相关文章推荐
Python3调用微信企业号API发送文本消息代码示例
Nov 10 Python
Python:Scrapy框架中Item Pipeline组件使用详解
Dec 27 Python
Python线程下使用锁的技巧分享
Sep 13 Python
Python3之手动创建迭代器的实例代码
May 22 Python
pandas DataFrame 交集并集补集的实现
Jun 24 Python
python实现图片中文字分割效果
Jul 22 Python
pycharm激活码快速激活及使用步骤
Mar 12 Python
Python基于当前时间批量创建文件
May 07 Python
新手学python应该下哪个版本
Jun 11 Python
python如何调用百度识图api
Sep 29 Python
Python descriptor(描述符)的实现
Nov 15 Python
python爬虫如何解决图片验证码
Feb 14 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
全国FM电台频率大全 - 31 新疆维吾尔族自治区
2020/03/11 无线电
php 8小时时间差的解决方法小结
2009/12/22 PHP
php FLEA中二叉树数组的遍历输出
2012/09/26 PHP
php实现邮件发送并带有附件
2014/01/24 PHP
ThinkPHP3.2.3数据库设置新特性
2015/03/05 PHP
PHP7之Mongodb API使用详解
2015/12/26 PHP
HTML Dom与Css控制方法
2010/10/25 Javascript
按下回车键指向下一个位置的一个函数代码
2014/03/10 Javascript
jQuery的缓存机制浅析
2014/06/07 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
2014/12/10 Javascript
Javascript显示和隐藏ul列表的方法
2015/07/15 Javascript
Angular设置title信息解决SEO方面存在问题
2016/08/19 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
在Vue.js中使用Mixins的方法
2017/09/12 Javascript
Bootstrap实现翻页效果
2017/11/27 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
2018/01/21 jQuery
vue 父组件通过v-model接收子组件的值的代码
2019/10/27 Javascript
Vue获取页面元素的相对位置的方法示例
2020/02/05 Javascript
解决vue组件销毁之后计时器继续执行的问题
2020/07/21 Javascript
JavaScript浅层克隆与深度克隆示例详解
2020/09/01 Javascript
微信小程序弹窗禁止页面滚动的实现代码
2020/12/30 Javascript
[01:04:14]OG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python画柱状统计图操作示例【基于matplotlib库】
2018/07/04 Python
python爬虫之线程池和进程池功能与用法详解
2018/08/02 Python
python制作填词游戏步骤详解
2019/05/05 Python
Python 3.8 新功能全解
2019/07/25 Python
python实现简单图书管理系统
2019/11/22 Python
欧铁通票官方在线销售网站:Eurail.com
2017/10/14 全球购物
斯巴达比赛商店:Spartan Race
2019/01/08 全球购物
科颜氏香港官方网店:Kiehl’s香港
2021/03/07 全球购物
高中生学习的自我评价
2013/12/14 职场文书
翻译学院毕业生自荐书
2014/02/02 职场文书
幼儿园教师教育感言
2014/02/28 职场文书
美容院管理规章制度
2015/08/05 职场文书
入党申请书格式
2019/06/20 职场文书
SQL Server使用导出向导功能
2022/04/08 SQL Server