2017-02-19 5 views
3

У меня есть фрейм данных с двумя столбцами:Панды карта строка INT на основе значения в столбце

state total_sales 
AL  16714 
AR  6498 
AZ  107296 
CA  33717 

Теперь я хочу, чтобы отобразить строки в столбце Состояние в целое от 1 до N (где N является нет строк, здесь 4) на основе возрастающего порядка значений в total_sales. Результат должен храниться в другом столбце (например, этикетке). То есть, хотел получить результат следующим образом:

state total_sales label 
AL  16714   3 
AR  6498   4 
AZ  107296  1 
CA  33717   2 

Пожалуйста, предложите векторную реализацию.

+1

Пожалуйста, покажите некоторые из ваших усилий – ZdaR

+0

@ZdaR: Реализовано это с цикл, но читал, что петли не рекомендуется для dataframes. –

ответ

4

Вы можете использовать rank с литыми к int:

df['label'] = df['total_sales'].rank(method='dense', ascending=False).astype(int) 
print (df) 
    state total_sales label 
0 AL  16714  3 
1 AR   6498  4 
2 AZ  107296  1 
3 CA  33717  2 
Смежные вопросы