【问题标题】:Splitting a pandas dataframe across attributes跨属性拆分熊猫数据框
【发布时间】:2021-05-31 22:34:55
【问题描述】:

我有一个包含许多用户和许多项目的数据框,并且用户项目对有一个评分,尽管并非所有用户都对所有项目进行评分

userId    itemId    rating
1         1         4
1         5         3
1         2         5
2         5         2
2         4         4

我正在尝试测试一个推荐模型的性能,该模型根据用户对其他项目的评分将前 k 个项目返回给用户。拆分数据框的最简单方法是什么,以便我可以为某些用户子集制作评分最高的项目的测试集?

【问题讨论】:

  • 所以澄清一下,您想选择包含/从最高评分元素中获得的数据集的一部分?
  • 欢迎来到 SO,不要犹豫,从您的数据样本中提供明确的所需输出。

标签: python pandas dataframe recommender-systems


【解决方案1】:

这将为您提供每个 UserId 评分最高的两个项目。您可以更改head() 中的号码,也可以查看https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.nlargest.html 作为替代方案

data='''userId    itemId    rating
1         1         4
1         5         3
1         2         5
2         5         2
2         4         4'''
df = pd.read_csv(io.StringIO(data), sep=' \s+', engine='python')
df.sort_values('rating', ascending=False).groupby('userId').head(2)

输出

   userId  itemId  rating
2       1       2       5
0       1       1       4
4       2       4       4
3       2       5       2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-23
    • 2019-10-26
    • 1970-01-01
    • 2019-05-29
    • 2013-07-08
    • 2017-05-08
    • 2020-02-19
    • 2023-01-12
    相关资源
    最近更新 更多