Pandas DataFrame: Sort the data frame first by 'name' in descending order, then by 'score' in ascending order
16. Sorting the DataFrame by Multiple Columns
Write a Pandas program to sort the data frame first by 'name' in descending order, then by 'score' in ascending order.
Sample DataFrame:
exam_data = {'name': ['Anastasia', 'Dima', 'Katherine', 'James', 'Emily', 'Michael', 'Matthew', 'Laura', 'Kevin', 'Jonas'],
'score': [12.5, 9, 16.5, np.nan, 9, 20, 14.5, np.nan, 8, 19],
'attempts': [1, 3, 2, 3, 2, 3, 1, 1, 2, 1],
'qualify': ['yes', 'no', 'yes', 'no', 'no', 'yes', 'yes', 'no', 'no', 'yes']}
labels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
Values for each column will be:
name : 'Suresh', score: 15.5, attempts: 1, qualify: ‘yes’, label: ‘k’
Sample Solution :
Python Code :
Sample Output:
Orginal rows: name score attempts qualify a Anastasia 12.5 1 yes b Dima 9.0 3 no c Katherine 16.5 2 yes d James NaN 3 no e Emily 9.0 2 no f Michael 20.0 3 yes g Matthew 14.5 1 yes h Laura NaN 1 no i Kevin 8.0 2 no j Jonas 19.0 1 yes Sort the data frame first by ‘name’ in descending order, then by ‘score’ in ascending order: name score attempts qualify f Michael 20.0 3 yes g Matthew 14.5 1 yes h Laura NaN 1 no i Kevin 8.0 2 no c Katherine 16.5 2 yes j Jonas 19.0 1 yes d James NaN 3 no e Emily 9.0 2 no b Dima 9.0 3 no a Anastasia 12.5 1 yes
Explanation:
The above code first creates a Pandas DataFrame ‘df’ from the dictionary ‘exam_data’ using the labels labels as the row index.
df.sort_values(by=['name', 'score'], ascending=[False, True]): This line sorts the DataFrame by the 'name' column in descending order and within each name, it sorts the 'score' column in ascending order.
For more Practice: Solve these Related Problems:
- Write a Pandas program to sort a DataFrame first by the 'name' column in descending order and then by 'score' in ascending order.
- Write a Pandas program to sort a DataFrame on multiple columns with different sort orders and then reset the index.
- Write a Pandas program to sort the DataFrame based on a custom function applied to the 'name' column and then by 'score'.
- Write a Pandas program to sort a DataFrame on two columns and then output the sorted DataFrame with a MultiIndex.
Go to:
Previous: Write a Pandas program to append a new row 'k' to DataFrame with given values for each column. Now delete the new row and return the original data frame.
Next: Write a Pandas program to replace the ‘qualify' column contains the values 'yes' and 'no' with True and False.
Python-Pandas Code Editor:
Have another way to solve this solution? Contribute your code (and comments) through Disqus.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.