2017-02-19 35 views
3

我有两列的数据帧:熊猫地图串为int基于值在一列

state total_sales 
AL  16714 
AR  6498 
AZ  107296 
CA  33717 

现在我想在状态列中的串映射来自1到int到N(其中N是no行,这里4)基于total_sales中值的递增顺序。结果应该存储在另一列(比如标签)中。也就是说,想要这样的结果:

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

请建议一个向量化的实现。

+1

请出示你的一些努力 – ZdaR

+0

@ZdaR:用for循环实现,但阅读不建议循环的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