【发布时间】:2022-01-06 18:13:51
【问题描述】:
一个数据框如下所示(这些只是小样本):
user item rating
u1 i1 0
u1 i2 1
u1 i3 1
u2 i2 1
u2 i3 0
u2 i4 0
u2 i5 0
u3 i6 1
u3 i7 1
u4 i4 1
u4 i7 0
还有一个是这样的:
item property_1 ... property_n grade
i1 0.60 1 Bad
i2 0.90 1 Good
i3 0.90 0 Good
i4 0.75 1 Bad
可能有项目在第一个数据帧中,而不是在第二个数据帧中,反之亦然。
我想知道的是,糟糕的项目是否真的被评为很差,以及好的项目是否真的被评为很好。我知道我可以得到平均的item 评级,例如这个:
df.groupby(['item'])['rating'].mean()
如果我为user 这样做,我会得到该用户给出的平均评分。
但我怎样才能构建如下所示的数据框?
item average_rating grade
i1 0 Bad
i2 1 Good
i3 0.5 Good
i4 0.5 Bad
一个额外的问题:我怎样才能合并关于用户的信息? (也许一个用户给了很多 0 评论,但你不能责怪他们,因为这些项目也被认为是糟糕的,但是另一个用户对被认为是好的项目给出了很多糟糕的评论)。但并非所有项目都在第二个数据框中,我们不知道用户的评论是否与评分一致(也许他们对 5 个坏项目的评价很好,对 5 个很好的项目评价很差)。所以我会改为将项目等级转换为0 和1:
user reviews_given item_grades consistency
u1 [0,1,1] [0,1,1] 1.00
u80 [0,1,0,1] [1,0,1,0] 0.00
这样的列表会起作用吗?怎么可能做到这一点?
【问题讨论】:
标签: python pandas dataframe mean