Оценка фрейма данных на основе процентильного ранга значения в строке - Python - PullRequest
0 голосов
/ 06 мая 2020

У меня есть фрейм данных в python, и я хочу создать новый столбец для оценки каждой строки на основе ее процентильного ранга. Я пробовал apply, но не смог заставить его работать.

Итак, по сути, я хотел бы проверить процентильный ранг для значения (.rank или .quantile), если он находится в верхних 20% (относительно всех значений в столбце), распределить 100% баллов (p = 100), если он находится в топ-40%, получите 50% (0,5 * p) баллов, иначе не получите баллов (0 * p).

Любая помощь будет принята с благодарностью! Спасибо.

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Вы используете квантиль для определения ваших перерывов, pd.cut, чтобы разбить их на категории, а затем использовать оценки как метки:

import numpy as np
import pandas as pd
df = pd.DataFrame({'x':np.random.uniform(0,1,100)})
p = 100
pd.cut(df['x'],df['x'].quantile([0,0.6,0.8,1]),labels=[0,0.5*p,p])
0 голосов
/ 06 мая 2020

Предполагая, что у вас есть ранг столбца, содержащий ранги каждой строки. Сначала инициализируйте столбец точек как 0, затем присвойте соответствующие значения. Примечание: Важен порядок

df['points']=0
df.loc[df['rank']/len(df['rank'])<=0.40,'points'] = 50*p
df.loc[df['rank']/len(df['rank'])<=0.20,'points'] = 100*p
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...