Ранжирование последней строки фрейма данных по всему столбцу

#python #pandas

Вопрос:

Я хотел бы ранжировать значения в последней строке фрейма данных по соответствующему столбцу выше и вернуть список рангов по «минимальной» сумме. Пример ниже:

 df = [[10, 2, 8, 4], [12, 6, 4, 1], [8, 4, 3, 2], [9, 3, 4, 6]]
df = pd.DataFrame(df)
print(df)

    0  1  2  3
0  10  2  8  4
1  12  6  4  1
2   8  4  3  2
3   9  3  4  6
 

Желаемый результат будет занимать 9 место в столбце 0 по сравнению со всем столбцом, поэтому он вернет 3 для этого элемента в списке. В столбце 2″ 4″ занимает 2-е место в этой колонке (отсюда и метод ранжирования «мин»). Желаемый результат ниже:

 result = [3, 3, 2, 1]
 

Ответ №1:

Воспользуйся rank

 rs = df.rank(method="dense", ascending=False).iloc[-1].tolist()
print(rs)
 

Выход

 [3.0, 3.0, 2.0, 1.0]
 

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

1. Как вы думаете, есть ли более эффективный способ сделать это с точки зрения времени, используя списки, а не фрейм данных?

2. Что вы подразумеваете под использованием списка?