This Pandas Dataframe tutorial shows you how to sort multiple column values with a custom key.
Suppose you have the following data:
name | price | level | reviews |
---|---|---|---|
Double Room with Private Bathroom | 47 | Exceptional | 1 |
The Empire Brunei | 309 | Excellent | 1464 |
Higher Hotel | 24 | Excellent | 865 |
Radisson Hotel Brunei | 120 | Excellent | 1314 |
Abdul Razak Hotel Apartment | 59 | Excellent | 129 |
And you want to sort on the Level and Reviews column and you need to define the custom key for the level column. Below is an example:
ranking_level_sort = { "Exceptional": 5, "Excellent": 4, "Very good": 3, "Good": 2, "Review score": 1, "None": 0 }
Pandas Dataframe - Sort Mulitple Column Values with Custom Key Example
You can use the map
 for both columns, so in reviews
 no matching and returned NaN
, so need to replace them with original values using fillna
. Below is an example:
hotel_sorted = hotel.sort_values(by=["level", "reviews"], key=lambda x: x.map(ranking_level_sort).fillna(x), ascending=False) hotel_sorted.reset_index(drop=True, inplace=True) print (hotel_sorted)
Output:
name | price | level | reviews |
---|---|---|---|
Double Room with Private Bathroom | 47 | Exceptional | 1 |
The Empire Brunei | 309 | Excellent | 1464 |
Radisson Hotel Brunei | 120 | Excellent | 1314 |
Higher Hotel | 24 | Excellent | 865 |
Abdul Razak Hotel Apartment | 59 | Excellent | 129 |