代码计算所有用户的评分 (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.在第二个dataframe中找到符合条件的user_id,并用它来过滤第一个dataframe:
ratings[ratings.user_id.isin(names.ix[names.Sname == 'ALLAN', 'user_id'])]
关于python - 在 Pandas (python)中包含和排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40476179/