您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python:如何查找三元组用户访问过的三元组

5b51 2022/1/14 8:21:51 python 字数 2668 阅读 510 来源 www.jb51.cc/python

我有一个CSV文件,其中包含用户访问的项目列表,例如:user_id item_id 370 293 471 380 280 100 280 118 219 118 ... 列表很长 - 30M行.我需要找到三个用户访问过的项目的三元组(即所有三个用户都访问了所有三个项目).这种三胞胎很少见.我试图找到的示例结果:user_id item_id 1 15

概述

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

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

列表很长 – 30M行.

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

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

有什么好办法呢?我可以使用Pandas或任何其他库.

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:如何查找三元组用户访问过的三元组全部内容,希望文章能够帮你解决Python:如何查找三元组用户访问过的三元组所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶