代码计算所有用户的评级(user_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.在“user_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.找到与第二个数据帧中的条件匹配的user_id,并使用它来过滤第一个数据帧:
ratings[ratings.user_id.isin(names.ix[names.Sname == 'ALLAN', 'user_id'])]