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


本文摘自php中文网,作者不言,侵删。

下面为大家分享一篇Python在groupby分组后提取指定位置记录方法,具有很好的参考价值,希望对大家有所帮助。一起过来看看吧

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

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

1)数据介绍

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

2)分组操作

1

2

3

4

a = action.groupby('userid')

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

type(a)

type(b)

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

3)取数操作

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

1

2

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)

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

1

2

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先做判断。

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

相关推荐:

pandas获取groupby分组里最大值所在的行方法


以上就是Python在groupby分组后提取指定位置记录方法的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python求n的阶乘

Python怎么把列表转化为字符串

分享一下Python数据分析常用的8款工具

Python安装的第三方库怎么删除

Python中map是什么意思

Python采集代理ip并判断是否可用和定时更新的方法

Python中的map怎么使用

Python中出现"indentationerror: unexpected indent"错误的解决

Python字典的cmp 函数是什么?cmp 函数的作用是什么?

Python属于什么类型语言

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...