我有以下数据框:
User_ID Game_ID votes
1 11 1040
1 11 nan
1 22 1101
1 11 540
1 33 nan
2 33 nan
2 33 290
2 33 nan
根据列votes
中值的百分位数,需要根据以下规则创建新列:
如果“投票”值> =第75个百分点,则将得分设为2
如果> = 25%,则得分为1
如果<第25个百分位数,则得分为0。
答案 0 :(得分:2)
使用pd.qcut
:
df['score'] = pd.qcut(df['votes'].astype(float), [0, 0.25, 0.75, 1.0]).cat.codes
print(df)
输出(nan
对应于-1
):
0 1
1 -1
2 2
3 1
4 -1
5 -1
6 0
7 -1
dtype: int8
答案 1 :(得分:2)
您可以通过调用describe和use list comprehension获得百分位数:
percentiles = df.votes.describe()
df['scores'] = [2 if x >= percentiles['75%'] else (0 if x < percentiles['25%'] else 1) for x in df.votes]