#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]]