如何为groupby movieID添加平均值列?

2024-04-25 08:03:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个像下面这样的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行代表movieId31,第1行和第6行代表movieId10

    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()

Tags: 代码用户df电影diff代表差异mean
1条回答
网友
1楼 · 发布于 2024-04-25 08:03:52

当用groupby计算平均值时,可以使用transform保持相同的行数。计算差异很简单:

df['mean'] = df.groupby('movieId')['rating'].transform('mean')
df['diff'] = df['rating'] - df['mean']

相关问题 更多 >