我有一个如下所示的df
userId movieId rating
0 1 31 2.0
1 2 10 4.0
2 2 17 5.0
3 2 39 5.0
4 2 47 4.0
5 3 31 3.0
6 3 10 2.0
我需要添加两列,一列是每部电影的mean
,另一列是diff
这是评分和平均值之间的区别。
请注意,movieId
可以重复,因为不同的用户可能会对同一部电影进行评分。此处第 0 行和第 5 行用于 movieId
31,第 1 行和第 6 行用于movieId
10
userId movieId rating mean diff
0 1 31 2.0 2.5 -0.5
1 2 10 4.0 3 1
2 2 17 5.0 5 0
3 2 39 5.0 5 0
4 2 47 4.0 4 0
5 3 31 3.0 2.5 0.5
6 3 10 2.0 3 -1
这是我的一些代码,用于计算平均值
df = df.groupby('movieId')['rating'].agg(['count','mean']).reset_index()
您可以使用
transform
在计算平均值时保持相同的行数 groupby
.计算差异很简单:
df['mean'] = df.groupby('movieId')['rating'].transform('mean')
df['diff'] = df['rating'] - df['mean']