gpt4 book ai didi

Python:如何找到用户三胞胎访问过的项目的三胞胎

转载 作者:太空狗 更新时间:2023-10-30 01:19:56 26 4
gpt4 key购买 nike

我有一个 CSV 文件,其中包含用户访问过的项目列表,例如:

user_id item_id
370 293
471 380
280 100
280 118
219 118
...

列表很长 - 3000 万行。

我需要找到三个用户访问过的项目的三元组(即所有三个用户都访问了所有三个项目)。这样的三胞胎很少见。我试图找到的示例结果:

user_id item_id
1 15
1 26
1 31
77 15
77 26
77 31
45 15
45 26
45 31

做这件事的好方法是什么?我可以使用 Pandas 或任何其他库。

最佳答案

您可以使用 transform使用 size 然后按 boolean indexing 过滤:

print (df)
user_id item_id
0 1 15
1 1 26
2 1 31
3 77 15
4 77 26
5 77 31
6 45 15
7 45 26
8 45 31
9 370 293
10 471 380
11 280 100
12 280 118
13 219 118
print (df.groupby('user_id')['item_id'].transform('size'))
0 3
1 3
2 3
3 3
4 3
5 3
6 3
7 3
8 3
9 1
10 1
11 2
12 2
13 1
Name: item_id, dtype: int64

print (df[df.groupby('user_id')['item_id'].transform('size') == 3])
user_id item_id
0 1 15
1 1 26
2 1 31
3 77 15
4 77 26
5 77 31
6 45 15
7 45 26
8 45 31

解决方案 filtration比较慢:

df = df.groupby('user_id').filter(lambda x: len(x.item_id) == 3)
print (df)
user_id item_id
0 1 15
1 1 26
2 1 31
3 77 15
4 77 26
5 77 31
6 45 15
7 45 26
8 45 31

关于Python:如何找到用户三胞胎访问过的项目的三胞胎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42666723/

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