groupby分组Python在groupby分组后提取指定位置记录⽅法
在进⾏数据分析、数据建模时,我们⾸先要做的就是对数据进⾏处理,提取我们需要的信息。下⾯为⼤家介绍⼀些groupby的⽤法,以便能够更加⽅便地进⾏数据处理。
我们往往在使⽤groupby进⾏信息提取时,往往是求分组后样本的⼀些统计量(max、min,var等)。如果现在我们希望取⼀下分组后样本的第⼆条记录,倒数第三条记录,这个该如何操作呢?我们可以通过first、last来提取分组后第⼀条和最后⼀条样本。但如果我们要取指定位置的样本,就没有现成的函数。需要我们⾃⼰去写了。下⾯我就为⼤家介绍如何实现上⾯的功能。
1)数据介绍
action表共有3列:userid、actionType和actionTime,分别代表⽤户id,⽤户⾏为类型和⾏为发⽣时间。具体格式如下图所⽰:
2)分组操作
a = upby('userid')
b = upby('userid')['actionTime']
type(a)
type(b)
分组后我们可以看到a和b的数据类型是DataFrameGroupBy和SeriesGroupBy
3)取数操作
①不同⽤户第⼆次/倒数第⼆次操作时间
②不同⽤户某种⾏为第⼆次/倒数第⼆次操作时间
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分组后提取指定位置记录⽅法就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论