Я хочу создать взвешенное ранжирование для фрейма данных на основе некоторых других переменных (см. Пример ниже). Однако 0 означает, что данные для оценки отсутствуют, и поэтому строка должна получить наименьшее значение рейтинга. Я знаю о na_option
, но я бы предпочел не изменять значения в столбцах Score
. Поскольку я хочу попробовать разные логические комбинации, код должен быть гибким для повышения и понижения рейтинга.
Id Score1 Score2 Score3
1 5 0 8
2 -4 2 6
3 3 1 5
4 0 -4 -3
w1, w2, w3 = 0.4, 0,3, 0.3
boolean1, boolean2, boolean3 = True, False, True
df['tmp_rank1'] = df[Score1].rank(ascending=boolean1)
df['tmp_rank2'] = df[Score2].rank(ascending=boolean2)
df['tmp_rank3'] = df[Score3].rank(ascending=boolean3)
df['final_rank'] = df['tmp_rank1'] * w1 + df['tmp_rank2'] * w2 + df['tmp_rank3'] * w3