Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

How to Sort a Pandas DataFrame by Both Index and Column?

  • Last Updated : 23 Dec, 2021

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 temperorle 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 temperorle 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

My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!