Pandas значение ранга в строках DataFrame - PullRequest
2 голосов
/ 30 мая 2020

Обучение Python. У меня есть такой фрейм данных

     cand1    cand2    cand3
0    40.0900  39.6700  36.3700
1    44.2800  44.2800  35.4200
2    43.0900  51.2200  46.3500
3    35.7200  55.2700  36.4700

, и я хочу ранжировать каждую строку в соответствии со значением столбцов, чтобы я получил

     cand1    cand2    cand3
0    1        2        3
1    1        1        3
2    1        3        2
3    3        1        2

Теперь у меня есть

    for index, row in df.iterrows():
        df.loc['Rank'] = df.loc[index].rank(ascending=False).astype(int)
        print (df)

Однако это продолжает повторять весь фрейм данных. Обратите внимание на особый случай в строке 2, где два значения совпадают.

Предложение приветствуется

1 Ответ

2 голосов
/ 30 мая 2020

Используйте df.rank вместо серии rank

df_rank = df.rank(axis=1, ascending=False, method='min').astype(int)

Out[165]:
   cand1  cand2  cand3
0      1      2      3
1      1      1      3
2      3      1      2
3      3      1      2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...