Sorting rows in pandas DataFrame
Last Updated :
06 Jan, 2019
Improve
Pandas DataFrame is two-dimensional size-mutable, potentially heterogeneous tabular data structure with labeled axes (rows and columns). We often need to do certain operations on both rows and column while handling the data.
Let’s see how to sort rows in pandas DataFrame.
Code #1: Sorting rows by Science
Python3
Python3
Python3 1==
# import modules
import pandas as pd
# create dataframe
data = {'name': ['Simon', 'Marsh', 'Gaurav', 'Alex', 'Selena'],
'Maths': [8, 5, 6, 9, 7],
'Science': [7, 9, 5, 4, 7],
'English': [7, 4, 7, 6, 8]}
df = pd.DataFrame(data)
# Sort the dataframe’s rows by Science,
# in descending order
a = df.sort_values(by ='Science', ascending = 0)
print("Sorting rows by Science:\n \n", a)
Output:
Code #2: Sort rows by Maths and then by English.
Sorting rows by Science: English Maths Science name 1 4 5 9 Marsh 0 7 8 7 Simon 4 8 7 7 Selena 2 7 6 5 Gaurav 3 6 9 4 Alex
# import modules
import pandas as pd
# create dataframe
data = {'name': ['Simon', 'Marsh', 'Gaurav', 'Alex', 'Selena'],
'Maths': [8, 5, 6, 9, 7],
'Science': [7, 9, 5, 4, 7],
'English': [7, 4, 7, 6, 8]}
df = pd.DataFrame(data)
# Sort the dataframe’s rows by Maths
# and then by English, in ascending order
b = df.sort_values(by =['Maths', 'English'])
print("Sort rows by Maths and then by English: \n\n", b)
Output:
Code #3: If you want missing values first.
Sort rows by Maths and then by English: English Maths Science name 1 4 5 9 Marsh 2 7 6 5 Gaurav 4 8 7 7 Selena 0 7 8 7 Simon 3 6 9 4 Alex
import pandas as pd
# create dataframe
data = {'name': ['Simon', 'Marsh', 'Gaurav', 'Alex', 'Selena'],
'Maths': [8, 5, 6, 9, 7],
'Science': [7, 9, 5, 4, 7],
'English': [7, 4, 7, 6, 8]}
df = pd.DataFrame(data)
a = df.sort_values(by ='Science', na_position ='first' )
print(a)
Output:
As there are no missing values in this example this will produce same output as the above one, but sorted in ascending order.
English Maths Science name 3 6 9 4 Alex 2 7 6 5 Gaurav 0 7 8 7 Simon 4 8 7 7 Selena 1 4 5 9 Marsh