【问题标题】:How to apply a function on pandas dataframe column如何在熊猫数据框列上应用函数
【发布时间】:2022-11-13 07:43:22
【问题描述】:

我有一个这样的熊猫数据框,其中包含用户收听的歌曲的user_idtitle 以及特定用户收听该歌曲的次数(listen_count)。

要达到的目标:

我是 python 和 pandas 的新手,我正在尝试构建一个推荐系统。我想改造这些隐式反馈(listen_count) 进入明确的那些跟随(8)(9)this论文的公式。

  • 为此,我想创建一个函数来计算每个用户每首歌曲的收听频率在数据框中,使用以下公式: 在哪里计数(i,j)代表某个用户播放某首歌曲的次数(我的数据框中的 listen_count 值)除以用户对他收听的所有歌曲的总播放次数(每个用户的 total listen_count )
  • 我还想创建一个函数来实现上述论文中的公式 (9),但我认为如果有人能向我解释如何解决前面的问题会更简单。

【问题讨论】:

    标签: python python-3.x pandas recommendation-engine collaborative-filtering


    【解决方案1】:

    您应该可以使用DataFrame.groupby() 解决此问题。假设您的数据框称为df,您可以尝试以下操作(我很难检查它是否在没有数据的情况下产生正确的结果)。

    # get the total listen count for each user_id
    df['total_listen_count_per_user'] = df.groupby('user_id')['listen_count'].transform('sum')
    # get the song frequency by dividing the sum of song_listen_counts per song by
    # the total_listen_count for each user
    df['song_frequency']=df.groupby('title')['listen_count'].transform('sum')/df['total_listen_count_per_user']
    

    这是DataFrame.transformDataFrame.groupby 的参考

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-26
      • 2017-10-03
      • 1970-01-01
      • 2019-02-07
      • 2013-02-07
      • 2018-04-21
      相关资源
      最近更新 更多