ранжирование по трем категориям Фрейм данных Панд

#pandas #rank

Вопрос:

У меня есть столбец mean_v, и я хочу создать новый столбец(rank_0-2), который разделил бы mean_v на три категории. 0-2

Как я могу это сделать? Я использую приведенный ниже код, который выполняет ранжирование, но мне нужно значение ранга только в трех категориях (0-2)

 df['rank_0-2'] = df.mean_v.rank(method='dense', ascending = False).astype(int)  
mean_v ранг_0-2
0
0.00787
1.00787
0.222222222222222
0.277777777777777
0.363636363636363
0.00787
1.00787
0.222222222222222
0.4

Комментарии:

1. Как мы определяем «ранг» нижней трети, средней трети, верхней трети ( df['rank_0-2'] = pd.cut(df['mean_v'], bins=3, labels=[2, 1, 0]) )? Или ты имеешь в виду взвешенный? Какие-то другие критерии для отнесения к классам 0, 1 и 2?

2. Да, означало нижнюю треть, среднюю треть и верхнюю треть

3. Как бы мы это сделали, если бы хотели сделать одинаково взвешенными? т. е. самая низкая 3-я из средних значений v = 0 и самая высокая 3-я из средних значений v =2

4. cut следует сделать это, если вы поставите метки, как [0, 1, 2] я только что сделал это по-другому, потому что у вас был ascending=False в показанном коде. В показанном примере числа разбиты на группы [(-0.00101, 0.336], (0.336, 0.672], (0.672, 1.008]]