根据另一列查找通用列值

桑瓦尔

我有一个数据框,其中包含两列UserId和movieId。不同的用户观看了不同的电影。我想获取(例如,两个普通用户之间的三部普通电影)。

df = DataFrame({'userId' : [1,2,3,1,3,6,2,4,1,2], 'movieId' : [222,222,900,555,555,888,555,222,666,666]})

所需的结果应该是这样的

userId movieId
1       222
1       555
1       666
2       222
2       555
2       666

我不需要用户不包含三部普通电影的其他条目。例如,如果有另一个用户观看了所有三部电影,则应考虑。

马克·莫雷托

这是做一些数据帧操作的代码。

  1. 设置一些变量:

    n_common_movies = 3 n_users = 2

  2. 创建包含电影组的列:

    df1 = df.groupby('userId')['movieId'].apply(list).reset_index(name='movies')

输出:

df1

   userId           movies
0       1  [222, 555, 666]
1       2  [222, 555, 666]
2       3       [900, 555]
3       4            [222]
4       6            [888]
  1. 将列表减少为相等的电影数量,n_common_movies因为这是我们想要的总数。如果不满足,那么我们可以跳过其余过程。

    df2 = df1.loc[df1['movies'].apply(lambda x: len(x))== n_common_movies,:]

输出:

df2

   userId           movies
0       1  [222, 555, 666]
1       2  [222, 555, 666]
  1. 使用pd.explode()“堆叠”步骤2的结果:

    df3 = df2.explode('movies')

输出:

df3

   userId movies
0       1    222
0       1    555
0       1    666
1       2    222
1       2    555
1       2    666
  1. 创建另一个分组以获取每个电影的观看次数:

    df4 = df3.groupby('movies').size().reset_index(name='viewer_count')

输出:

df4

   movies  viewer_count
0     222             2
1     555             2
2     666             2
  1. 最后,检查以确保基于预期用户数的过滤结果等于普通电影数量的长度,并打印... userId,我猜是这样。打印任何您想要的,大声笑。

    if len(df4[df4['viewer_count'] == n_users]) == n_common: tmp = '\n\t'.join([str(i) for i in list(set(df3['userId']))]) print('Users with three common movies: \n\t{}'.format(tmp))

输出:

Users with three common movies: 1 2

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

猪根据另一列中的值添加列

来自分类Dev

来自与新列匹配的另一列的查找值

来自分类Dev

SQL根据另一列的值选择列

来自分类Dev

根据Postgres中的另一列设置列的值?

来自分类Dev

根据另一列从列中检索值

来自分类Dev

根据R中另一列的值选择列

来自分类Dev

根据另一列的值填充CSV列

来自分类Dev

Python:Pandas:如何根据Groupby在另一列中查找最大值

来自分类Dev

根据另一列的值创建新列

来自分类Dev

熊猫根据另一列的值移动列数据

来自分类Dev

根据另一列的值查询列

来自分类Dev

根据另一列熊猫的值添加新列

来自分类Dev

根据另一列更改一列的值

来自分类Dev

根据另一列中的一列查找行值并进行计算

来自分类Dev

在另一列中查找一列的值

来自分类Dev

查找列中的值是否在另一列中

来自分类Dev

根据数据框中另一列的唯一值查找一列的所有组合

来自分类Dev

根据另一列的值更改相邻列的值

来自分类Dev

根据另一列的值创建新列

来自分类Dev

根据另一列中的唯一值查找一列中的重复项

来自分类Dev

Sql server - 根据另一列查找列的范围

来自分类Dev

根据r中的ID从另一列中的一列中查找值

来自分类Dev

pandas - 根据另一列更改列中的值

来自分类Dev

根据另一列的值添加一列

来自分类Dev

根据另一列在 R 中查找特定列

来自分类Dev

根据另一列中的值创建新列

来自分类Dev

根据另一列的条件值绘制列的值?

来自分类Dev

如何根据另一列的百分位查找值

来自分类Dev

根据另一列(浮动)更改列(分类)值