在python pandas数据框“ df”中,我具有以下三列:
song_id | user_id | play_count
我有一个根据play_count(用户听过歌曲多少次)发明的评分表:
play_count | rating
1-33 | 1
34-66 | 2
67-99 | 3
100-199 | 4
>200 | 5
我正在尝试根据播放次数向该表添加一列“评分”。例如,如果play_count = 2,则评分将为“ 1”。
所以看起来像这样
song_id | user_id | play_count | rating
X232 | u8347 | 2 | 1
X987 | u3701 | 50 | 2
X271 | u9327 | 10 | 1
X523 | u1398 | 175 | 4
在excel中,我会使用match / index来做到这一点,但是我不知道如何在python / pandas中做到这一点。
它是if / else循环和isin的结合吗?
您需要像在Excel中一样需要这些范围的端点:
import numpy as np
bins = [1, 33, 66, 99, 199, np.inf]
然后,您可以使用pd.cut查找相应的等级:
pd.cut(df['play_count'], bins=bins, include_lowest=True, labels=[1, 2, 3, 4, 5]).astype(int)
我astype(int)
在末尾添加了内容,因为pd.cut返回了一个分类序列,因此您不能对其进行算术计算。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句