在熊猫中创建一个得分列,其值取决于另一列的百分位数

时间:2019-04-18 07:24:31

标签: python python-3.x pandas

我有以下数据框:

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。

2 个答案:

答案 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]