我有一个看起来像这样的数据框:
userId id rating
1 110 1.0
2 141 3.0
2 260 4.5
2 1092 2.5
3 223 4.0
我有一个所有userId的列表,存储在users_list中。
我可以使用df.loc[df['userId'] == users_list[someId]]['rating'].mean()
获得平均评级,但是如果我尝试将其存储在某个地方,则会出现错误,我试图在副本上设置值。
解决这个问题的最佳方法是什么?
答案 0 :(得分:1)
以下是带有两个选项的答案:
如果您想让原始数据框的均值列
df = df.merge(df.groupby('userId')['rating'].mean().reset_index().rename(columns={'rating':'mean'}), on='userId')
userId id rating mean
0 1 110 1.0 1.000000
1 2 141 3.0 3.333333
2 2 260 4.5 3.333333
3 2 1092 2.5 3.333333
4 3 223 4.0 4.000000
如果您想要一个仅包含用户ID和均值的新数据框
df = df.groupby('userId')['rating'].mean().reset_index().rename(columns={'rating':'mean'})
userId mean
0 1 1.000000
1 2 3.333333
2 3 4.000000