【问题标题】:How to apply a function on pandas dataframe column如何在熊猫数据框列上应用函数
【发布时间】:2022-11-13 07:43:22
【问题描述】:
我有一个这样的熊猫数据框,其中包含用户收听的歌曲的user_id、title 以及特定用户收听该歌曲的次数(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.transform 和DataFrame.groupby 的参考