如何为分组依据电影 ID 添加平均列



我有一个如下所示的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']

最新更新