代码计算所有用户(用户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'])]