获取特定行的均值并存储它

问题描述 投票:0回答:1

我有一个看起来像这样的数据框:

   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中。

它非常长(一百万行),我正在尝试获取每位用户的平均评分并将其存储为:

  • 与以前在同一users_list中,但成对
    • 像[[userId1,meanRating],[userId2,meanRating],...]
  • 作为DataFrame中的一项功能,因此每一行都具有该特定用户的平均评分(我可以删除除每位用户1条以外的所有行)

我可以使用df.loc[df['userId'] == users_list[someId]]['rating'].mean()获得平均评级,但是如果我尝试将其存储在某处,则会收到我试图在副本上设置值的错误。

解决这个问题的最佳方法是什么?

python pandas dataframe mean rating
1个回答
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

如果您想要一个仅包含用户标识和均值的新数据框,则>

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
© www.soinside.com 2019 - 2024. All rights reserved.