Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Selected Reading
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.
Advertisements
