How to Sort a Pandas DataFrame by Both Index and Column?
In this article, we will discuss how to sort a Pandas dataframe by both index and columns.
Method 1: Sort DataFrame based on Index
We can sort a Pandas DataFrame based on Index and column using sort_index method.
- To sort the DataFrame based on the index we need to pass axis=0 as a parameter to sort_index method.
- To sort the DataFrame based on the column name then we need to pass axis=1 as a parameter to sort_index method.
Syntax
DataFrame_Name.sort_index(axis=0, ascending=True, inplace=False, kind=’quicksort’)
Parameters
- axis- Specifies on which basis to sort whether based on index or column. By default, it sorts based on index i.e. axis=0.
- ascending- Specifies on which order to sort whether in ascending or descending order. It accepts True or False. By default it is True.
- inplace- It specifies that the changes to the DataFrame is Temporary or Permanent. inplace=False indicates temporary and True indicates permanent.
- kind- Specifies which sorting algorithm to use. It accepts quicksort, mergesort, heapsort, etc. By default, it is quicksort if not mentioned.
DataFrame
|
col2 |
col1 |
---|---|---|
3 |
150 |
70 |
2 |
170 |
55 |
1 |
160 |
60 |
This was the DataFrame we are using in the below codes for sorting. By specifying axis=0 in sort_index method we can sort the DataFrame. Even if we don’t specify axis parameter in sort_index by default it sorts the DataFrame based on row.
Example:
In this example, the DataFrame is a sorted DataFrame based on index labels and this was temporarily sorted in python language.
Python3
# import necessary packages import pandas as pd # create 2 dataframes with different indexes hostelCandidates1 = pd.DataFrame({ 'col2' : [ 150 , 170 , 160 ], 'col1' : [ 70 , 55 , 60 ]}, index = [ 3 , 2 , 1 ]) print ( 'original DataFrame' ) print (hostelCandidates1) # sorted temporarily based on index labels print ( 'Sorted by index' ) hostelCandidates1.sort_index(axis = 0 ) |
Output
original DataFrame col2 col1 3 150 70 2 170 55 1 160 60 Sorted by index col2 col1 1 160 60 2 170 55 3 150 70
Method 2: Sort DataFrame based on columns
To sort the data in the DataFrame on the basis of column names, then we need to pass axis=1 as a parameter to sort_index method in python language.
Code
Python3
# import necessary packages import pandas as pd # create 2 dataframes with different indexes hostelCandidates1 = pd.DataFrame({ 'col2' : [ 150 , 170 , 160 ], 'col1' : [ 70 , 55 , 60 ]}, index = [ 3 , 2 , 1 ]) print ( 'original DataFrame' ) print (hostelCandidates1) # sorted temporarily based on column labels print ( 'Sorted by column name' ) hostelCandidates1.sort_index(axis = 1 ) |
Output
original DataFrame col2 col1 3 150 70 2 170 55 1 160 60 Sorted by column name col1 col2 3 70 150 2 55 170 1 60 160
Example Code to sort the DataFrame & save changes permanently on original DataFrame:
Here the sort operation is performed directly on the original DataFrame and changes are saved permanently because of inplace=True argument.
Python3
# import necessary packages import pandas as pd # create 2 dataframes with different indexes hostelCandidates1 = pd.DataFrame({ 'col2' : [ 150 , 170 , 160 ], 'col1' : [ 70 , 55 , 60 ]}, index = [ 3 , 2 , 1 ]) print ( 'original DataFrame' ) print (hostelCandidates1) # sorted permanently based on column labels hostelCandidates1.sort_index(axis = 1 , inplace = True ) print ( 'Modified Original DataFrame' ) print (hostelCandidates1) |
Output
original DataFrame col2 col1 3 150 70 2 170 55 1 160 60 Modified Original DataFrame col1 col2 3 70 150 2 55 170 1 60 160
Please Login to comment...