Sorting a DataFrame based on column names or row index labels using Dataframe.sort_index() in Python
In this article we will discuss how we organize the content of data entered based on column names or line reference labels using Dataframe.sort_index ().
Dataframe.sort_index():
In the Python Pandas Library, the Dataframe section provides a member sort sort_index () to edit DataFrame based on label names next to the axis i.e.
DataFrame.sort_index(axis=0, level=None, ascending=True, inplace=False, kind='quicksort', na_position='last', sort_remaining=True, by=None)
Where,
- axis :If the axis is 0, then the data name will be sorted based on the line index labels. The default is 0
- ascending :If the axis is 1, then the data name will be sorted based on column names.
- inplace : If the type of truth in the rise of another type arrange in order. The default is true
- na_position : If True, enable localization in Dataframe. Determines NaN status after filter i.e. irst puts NaNs first, finally puts NaNs at the end.
It returns the edited data object. Also, if the location dispute is untrue then it will return a duplicate copy of the provided data, instead of replacing the original Dataframe. While, if the internal dispute is true it will cause the current file name to be edited.
Let’s understand some examples,
# Program :
import pandas as pd
# List of Tuples
students = [ ('Rama', 31, 'canada') ,
('Symon', 23, 'Chennai' ) ,
('Arati', 16, 'Maharastra') ,
('Bhabani', 32, 'Kolkata' ) ,
('Modi', 33, 'Uttarpradesh' ) ,
('Heeron', 39, 'Hyderabad' )
]
# Create a DataFrame object
dfObj = pd.DataFrame(students, columns=['Name', 'Marks', 'City'], index=['b', 'a', 'f', 'e', 'd', 'c'])
print(dfObj)
Output :
Name Marks City
b Rama 31 canada
a Symon 23 Chennai
f Arati 16 Maharastra
e Bhabani 32 Kolkata
d Modi 33 Uttarpradesh
c Heeron 39 Hyderabad
Now let’s see how we organize this DataFrame based on labels i.e. columns or line reference labels,
Sort rows of a Dataframe based on Row index labels :
Sorting by line index labels we can call sort_index()
in the data name item.
import pandas as pd
# The List of Tuples
students = [ ('Rama', 31, 'canada') ,
('Symon', 23, 'Chennai' ) ,
('Arati', 16, 'Maharastra') ,
('Bhabani', 32, 'Kolkata' ) ,
('Modi', 33, 'Uttarpradesh' ) ,
('Heeron', 39, 'Hyderabad' )
]
# To create DataFrame object
dfObj = pd.DataFrame(students, columns=['Name', 'Marks', 'City'], index=['b', 'a', 'f', 'e', 'd', 'c'])
# By sorting the rows of dataframe based on row index label names
modDFObj = dfObj.sort_index()
print(' Dataframes are in sorted oreder of index value given:')
print(modDFObj)
Output :
Dataframes are in sorted oreder of index value given:
Name Marks City
a Symon 23 Chennai
b Rama 31 canada
c Heeron 39 Hyderabad
d Modi 33 Uttarpradesh
e Bhabani 32 Kolkata
f Arati 16 Maharastra
As we can see in the output lines it is sorted based on the reference labels now. Instead of changing the original name data backed up an edited copy of the dataframe.
Sort rows of a Dataframe in Descending Order based on Row index labels :
Sorting based on line index labels in descending order we need to pass the argument = False
in sort_index()
function in the data object object.
import pandas as pd
# The List of Tuples
students = [ ('Rama', 31, 'canada') ,
('Symon', 23, 'Chennai' ) ,
('Arati', 16, 'Maharastra') ,
('Bhabani', 32, 'Kolkata' ) ,
('Modi', 33, 'Uttarpradesh' ) ,
('Heeron', 39, 'Hyderabad' )
]
# To create DataFrame object
dfObj = pd.DataFrame(students, columns=['Name', 'Marks', 'City'], index=['b', 'a', 'f', 'e', 'd', 'c'])
# By sorting the rows of dataframe in descending order based on row index label names
conObj = dfObj.sort_index(ascending=False)
print('The Contents of Dataframe are sorted in descending Order based on Row Index Labels are of :')
print(conObj)
The Contents of Dataframe are sorted in descending Order based on Row Index Labels are of :
Name Marks City
f Arati 16 Maharastra
e Bhabani 32 Kolkata
d Modi 33 Uttarpradesh
c Heeron 39 Hyderabad
b Rama 31 canada
a Symon 23 Chennai
As we can see in the output lines it is sorted by destructive sequence based on the current reference labels. Also, instead of changing the original data name it restored the edited copy of the data.
Sort rows of a Dataframe based on Row index labels in Place :
Filtering a local data name instead of finding the default copy transfer inplace = True
in sort_index ()
function in the data object object to filter the data name with local reference label labels i.e.
import pandas as pd
# The List of Tuples
students = [ ('Rama', 31, 'canada') ,
('Symon', 23, 'Chennai' ) ,
('Arati', 16, 'Maharastra') ,
('Bhabani', 32, 'Kolkata' ) ,
('Modi', 33, 'Uttarpradesh' ) ,
('Heeron', 39, 'Hyderabad' )
]
# To create DataFrame object
dfObj = pd.DataFrame(students, columns=['Name', 'Marks', 'City'], index=['b', 'a', 'f', 'e', 'd', 'c'])
#By sorting the rows of dataframe in Place based on row index label names
dfObj.sort_index(inplace=True)
print('The Contents of Dataframe are sorted in Place based on Row Index Labels are of :')
print(dfObj)
Output :
The Contents of Dataframe are sorted in Place based on Row Index Labels are of :
Name Marks City
a Symon 23 Chennai
b Rama 31 canada
c Heeron 39 Hyderabad
d Modi 33 Uttarpradesh
e Bhabani 32 Kolkata
f Arati 16 Maharastra
Sort Columns of a Dataframe based on Column Names :
To edit DataFrame based on column names we can say sort_index () in a DataFrame object with an axis= 1 i.e.
import pandas as pd
# The List of Tuples
students = [ ('Rama', 31, 'canada') ,
('Symon', 23, 'Chennai' ) ,
('Arati', 16, 'Maharastra') ,
('Bhabani', 32, 'Kolkata' ) ,
('Modi', 33, 'Uttarpradesh' ) ,
('Heeron', 39, 'Hyderabad' )
]
# To create DataFrame object
dfObj = pd.DataFrame(students, columns=['Name', 'Marks', 'City'], index=['b', 'a', 'f', 'e', 'd', 'c'])
# By sorting a dataframe based on column names
conObj = dfObj.sort_index(axis=1)
print('The Contents are of Dataframe sorted based on Column Names are in the type :')
print(conObj)
Output :
The Contents are of Dataframe sorted based on Column Names are in the type :
City Marks Name
b canada 31 Rama
a Chennai 23 Symon
f Maharastra 16 Arati
e Kolkata 32 Bhabani
d Uttarpradesh 33 Modi
c Hyderabad 39 Heeron
As we can see, instead of changing the original data name it returns a fixed copy of the data data based on the column names.
Sort Columns of a Dataframe in Descending Order based on Column Names :
By sorting DataFrame based on column names in descending order, we can call sort_index ()
in the DataFrame item with axis = 1 and ascending = False i.e.
import pandas as pd
# The List of Tuples
students = [ ('Rama', 31, 'canada') ,
('Symon', 23, 'Chennai' ) ,
('Arati', 16, 'Maharastra') ,
('Bhabani', 32, 'Kolkata' ) ,
('Modi', 33, 'Uttarpradesh' ) ,
('Heeron', 39, 'Hyderabad' )
]
# To create DataFrame object
dfObj = pd.DataFrame(students, columns=['Name', 'Marks', 'City'], index=['b', 'a', 'f', 'e', 'd', 'c'])
# By sorting a dataframe in descending order based on column names
conObj = dfObj.sort_index(ascending=False, axis=1)
print('The Contents of Dataframe sorted in Descending Order based on Column Names are of :')
print(conObj)
Output :
The Contents of Dataframe sorted in Descending Order based on Column Names are of :
Name Marks City
b Rama 31 canada
a Symon 23 Chennai
f Arati 16 Maharastra
e Bhabani 32 Kolkata
d Modi 33 Uttarpradesh
c Heeron 39 Hyderabad
Instead of changing the original data name restore the edited copy of the data based on the column names (sorted by order)
Sort Columns of a Dataframe in Place based on Column Names :
Editing a local data name instead of obtaining an approved copy pass input = True and axis = 1 in sort_index () function in the dataframe object to filter the local data name by column names i.e.
import pandas as pd
# The List of Tuples
students = [ ('Rama', 31, 'canada') ,
('Symon', 23, 'Chennai' ) ,
('Arati', 16, 'Maharastra') ,
('Bhabani', 32, 'Kolkata' ) ,
('Modi', 33, 'Uttarpradesh' ) ,
('Heeron', 39, 'Hyderabad' )
]
# To create DataFrame object
dfObj = pd.DataFrame(students, columns=['Name', 'Marks', 'City'], index=['b', 'a', 'f', 'e', 'd', 'c'])
# By sorting a dataframe in place based on column names
dfObj.sort_index(inplace=True, axis=1)
print('The Contents of Dataframe sorted in Place based on Column Names are of:')
print(dfObj)
Output :
The Contents of Dataframe sorted in Place based on Column Names are of:
City Marks Name
b canada 31 Rama
a Chennai 23 Symon
f Maharastra 16 Arati
e Kolkata 32 Bhabani
d Uttarpradesh 33 Modi
c Hyderabad 39 Heeron
Want to expert in the python programming language? Exploring Python Data Analysis using Pandas tutorial changes your knowledge from basic to advance level in python concepts.
Read more Articles on Python Data Analysis Using Padas – Modify a Dataframe