代码计算所有用户(用户id)的等级,我只想计算所有ALLAN为sName的用户的等级。
主要代码

grouped_data = ratings['rating'].groupby(ratings['movie_id'])
average_ratings = grouped_data.mean()
movie_count = ratings.movie_id.value_counts()
higher_than_50_votes = movie_count.index[movie_count > 50]
average_ratings.ix[higher_than_50_votes].sort_values(ascending=False).head(5)

第一张桌子的一部分。
 user_id     movie_id  rating
    196        242        3
    22        302         3
    90        377         1
    10         51         2
    2         346         1
    1         474         4
    8         265         2
    4         465         5
    2         451         3
    1         451         5

第二张桌子的一部分。
  user_id       Sname
    1|          AKERS
    2|          other
    3|          ALEXANDER
    4|          ALBERT
    5|          ALBERT
    6|          ANSEL
    7|          ALLARD
    8|          ALLAN
    9|          ALLAN

最佳答案

有几种方法:
1.合并ratings数据框中“用户id”上的Sname列

ratings_with_names = ratings.merge(names, on='user_id')

这给了你类似的东西:
    user_id     movie_id    rating  unix_timestamp  Sname
0   6           86          3       883603013       ANSEL
1   6           14          5       883599249       ANSEL
2   6           98          5       883600680       ANSEL
3   6           463         4       883601713       ANSEL

因此,现在只需选择boolean indexing所需的行就很容易了。
ratings_with_names[ratings_with_names.Sname == 'ALLAN']

2.找到与第二个数据帧中的条件匹配的用户id,并使用该id对第一个数据帧进行筛选:
ratings[ratings.user_id.isin(names.ix[names.Sname == 'ALLAN', 'user_id'])]

10-02 01:29
查看更多