#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. Что вы подразумеваете под использованием списка?