Python - Ranking Rows of Pandas DataFrame

Pandas DataFrame ranking allows you to assign rank values to rows based on a specific column's values. The rank() method is useful for ordering data and identifying the relative position of elements.

Creating Sample DataFrame

Let's start by creating a DataFrame with game data ?

import pandas as pd

games = {
    'Name': ['Call Of Duty', 'Total Overdose', 'GTA 3', 'Bully'],
    'Play Time(hours)': [45, 46, 52, 22],
    'Rate': ['Better than Average', 'Good', 'Best', 'Average']
}

df = pd.DataFrame(games)
print(df)
           Name  Play Time(hours)              Rate
0   Call Of Duty                45  Better than Average
1  Total Overdose                46              Good
2       GTA 3                52              Best
3        Bully                22           Average

Adding Ranking Column

The rank() method assigns rankings based on column values. Higher values get lower ranks when ascending=False ?

import pandas as pd

games = {
    'Name': ['Call Of Duty', 'Total Overdose', 'GTA 3', 'Bully'],
    'Play Time(hours)': [45, 46, 52, 22],
    'Rate': ['Better than Average', 'Good', 'Best', 'Average']
}

df = pd.DataFrame(games)
df['Ranking'] = df['Play Time(hours)'].rank(ascending=False)
print(df)
           Name  Play Time(hours)              Rate  Ranking
0   Call Of Duty                45  Better than Average      3.0
1  Total Overdose                46              Good      2.0
2       GTA 3                52              Best      1.0
3        Bully                22           Average      4.0

Handling Tied Values

When values are identical, rank() assigns average ranks by default ?

import pandas as pd

data = {
    'Player': ['Alice', 'Bob', 'Charlie', 'David'],
    'Score': [85, 90, 85, 92]
}

df = pd.DataFrame(data)
df['Rank'] = df['Score'].rank(ascending=False)
print(df)
    Player  Score  Rank
0    Alice     85   2.5
1      Bob     90   2.0
2  Charlie     85   2.5
3    David     92   1.0

Ranking Methods

The method parameter controls how tied values are handled ?

import pandas as pd

data = {'Score': [85, 90, 85, 92]}
df = pd.DataFrame(data)

df['average'] = df['Score'].rank(method='average', ascending=False)
df['min'] = df['Score'].rank(method='min', ascending=False)
df['max'] = df['Score'].rank(method='max', ascending=False)
print(df)
   Score  average  min  max
0     85      2.5  2.0  3.0
1     90      2.0  2.0  2.0
2     85      2.5  2.0  3.0
3     92      1.0  1.0  1.0

Ranking Parameters

Parameter Description Default
ascending Sort order (True/False) True
method How to handle ties 'average'
na_option Handle NaN values 'keep'

Conclusion

Use df.rank() to assign rankings based on column values. Set ascending=False for highest-to-lowest ranking. The method parameter controls tie-breaking behavior.

Updated on: 2026-03-26T18:46:15+05:30

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements