gpt4 book ai didi

python - Pandas 按两列分组,仅根据计数保留满足条件的记录

转载 作者:行者123 更新时间:2023-11-30 22:15:22 25 4
gpt4 key购买 nike

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

这是数据集:(只有很少的记录)

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

我可以使用 user_idsession_id 对数据进行groupby,并获取用户评分的项目的计数在 session 中:

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

可以获得用户在一次 session 中评分过的项目列表:

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

目标是如果用户在 session 中对超过 3 个项目进行了评分,我只想从原始数据框中选择前三个项目(每个用户每个 session 只保留前三个项目)。也许可以利用时间对元素进行排序?

首先尝试获取哪些 session 包含超过 3 个 session ,但有些难以超越。

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

示例:在原始 df 中,用户 123 的前三个记录应属于 session 36

最佳答案

您似乎想将 groupbyhead 一起使用:

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

关于python - Pandas 按两列分组,仅根据计数保留满足条件的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50321512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com