熊猫按两列分组,并且仅根据计数保留满足条件的记录

加分号

如果操作数达到阈值,则尝试过滤掉用户已执行的操作数。

这是数据集:(仅少数记录)

user_id,session_id,item_id,rating,length,time
123,36,28,3.5,6243.0,2015-03-07 22:44:40
123,36,29,2.5,4884.0,2015-03-07 22:44:14
123,36,30,3.5,6846.0,2015-03-07 22:44:28
123,36,54,6.5,10281.0,2015-03-07 22:43:56
123,36,61,3.5,7639.0,2015-03-07 22:43:44
123,36,62,7.5,18640.0,2015-03-07 22:43:34
123,36,63,8.5,7189.0,2015-03-07 22:44:06
123,36,97,2.5,7627.0,2015-03-07 22:42:53
123,36,98,4.5,9000.0,2015-03-07 22:43:04
123,36,99,7.5,7514.0,2015-03-07 22:43:13
223,63,30,8.0,5412.0,2015-03-22 01:42:10
123,36,30,5.5,8046.0,2015-03-07 22:42:05
223,63,32,8.5,4872.0,2015-03-22 01:42:03
123,36,32,7.5,11914.0,2015-03-07 22:41:54
225,63,35,7.5,6491.0,2015-03-22 01:42:19
123,36,35,5.5,7202.0,2015-03-07 22:42:15
123,36,36,6.5,6806.0,2015-03-07 22:42:43
123,36,37,2.5,6810.0,2015-03-07 22:42:34
225,63,41,5.0,15026.0,2015-03-22 01:42:37
225,63,45,6.5,8532.0,2015-03-07 22:42:25

我可以groupby使用user_idsession_id获得数据并获得count用户在会话中评分的项目:

df.groupby(['user_id', 'session_id']).agg({'item_id':'count'}).rename(columns={'item_id': 'count'})

可以获取用户在会话中评分的项目列表:

df.groupby(['user_id','session_id'])['item_id'].apply(list)

目标是要跟踪用户在会话中的评分是否超过3个项目,我只想从原始数据框中选择前三个项目(每个会话每个用户仅保留前三个项目)。也许用时间对物品进行排序?

首先尝试获取哪些会话包含3个以上的会话,但很难超越。

df.groupby(['user_id', 'session_id'])['item_id'].apply(
            lambda x: (x > 3).count())

示例:从原始df中,用户123应具有属于会话的前三个记录36

用户名

看来您想搭配groupby使用head

In [8]: df.groupby([df.user_id, df.session_id]).head(3)
Out[8]:
    user_id  session_id  item_id  rating   length                 time
0       123          36       28     3.5   6243.0  2015-03-07 22:44:40
1       123          36       29     2.5   4884.0  2015-03-07 22:44:14
2       123          36       30     3.5   6846.0  2015-03-07 22:44:28
10      223          63       30     8.0   5412.0  2015-03-22 01:42:10
12      223          63       32     8.5   4872.0  2015-03-22 01:42:03
14      225          63       35     7.5   6491.0  2015-03-22 01:42:19
18      225          63       41     5.0  15026.0  2015-03-22 01:42:37
19      225          63       45     6.5   8532.0  2015-03-07 22:42:25

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章