HalfPintBoy HalfPintBoy - 3 months ago 30
SQL Question

Pandas DENSE RANK

I'm dealing with pandas dataframe and have a frame like this:

Year Value
2012 10
2013 20
2013 25
2014 30


I want to make an equialent to DENSE_RANK () over (order by year) function. to make an additional column like this:

Year Value Rank
2012 10 1
2013 20 2
2013 25 2
2014 30 3


How can it be done in pandas?

Thanks!

Answer

Use pd.Series.rank with method='dense'

df['Rank'] = df.Year.rank(method='dense').astype(int)

df

enter image description here