Сортировка строк или столбцов в Pandas Dataframe на основе значений

Опубликовано: 27 Марта, 2022

In this article, Let’s discuss how to Sort rows or columns in Pandas Dataframe based on values. Pandas sort_values() method sorts a data frame in Ascending or Descending order of passed Column. It’s different than the sorted Python function since it cannot sort a data frame and particular column cannot be selected.

Syntax: DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind=’quicksort’, na_position=’last’)

Parameters: This method will take following parameters :
by: Single/List of column names to sort Data Frame by.
axis: 0 or ‘index’ for rows and 1 or ‘columns’ for Column.
ascending: Boolean value which sorts Data frame in ascending order if True.
inplace: Boolean value. Makes the changes in passed data frame itself if True.
kind: String which can have three inputs(‘quicksort’, ‘mergesort’ or ‘heapsort’) of the algorithm used to sort data frame.
na_position: Takes two string input ‘last’ or ‘first’ to set position of Null values. Default is ‘last’.

Return Type: Returns a sorted Data Frame with Same dimensions as of the function caller Data Frame.

Теперь давайте создадим образец фрейма данных:

# import pandas library as pd
import pandas as pd
  
# List of Tuples
students = [("Ankit", 22, "Up", "Geu"),
           ("Ankita", 31, "Delhi", "Gehu"),
           ("Rahul", 16, "Tokyo", "Abes"),
           ("Simran", 41, "Delhi", "Gehu"),
           ("Shaurya", 33, "Delhi", "Geu"),
           ("Harshita", 35, "Mumbai", "Bhu" ),
           ("Swapnil", 35, "Mp", "Geu"),
           ("Priya", 35, "Uk", "Geu"),
           ("Jeet", 35, "Guj", "Gehu"),
           ("Ananya", 35, "Up", "Bhu")
            ]
  
# Create a DataFrame object from
# list of tuples with columns
# and indices.
details = pd.DataFrame(students, columns =["Name", "Age"
                                           "Place", "College"],
                        index =[ "b", "c", "a", "e", "f",
                                "g", "i", "j", "k", "d"])
# show the dataframe
details

Output:

Example 1: Sort Dataframe rows based on a single column.

# import pandas library as pd
import pandas as pd
  
# List of Tuples
students = [("Ankit", 22, "Up", "Geu"),
           ("Ankita", 31, "Delhi", "Gehu"),
           ("Rahul", 16, "Tokyo", "Abes"),
           ("Simran", 41, "Delhi", "Gehu"),
           ("Shaurya", 33, "Delhi", "Geu"),
           ("Harshita", 35, "Mumbai", "Bhu" ),
           ("Swapnil", 35, "Mp", "Geu"),
           ("Priya", 35, "Uk", "Geu"),
           ("Jeet", 35, "Guj", "Gehu"),
           ("Ananya", 35, "Up", "Bhu")
            ]
  
# Create a DataFrame object from
# list of tuples with columns
# and indices.
details = pd.DataFrame(students, columns =["Name", "Age",
                                           "Place", "College"],
                        index =[ "b", "c", "a", "e", "f",
                                "g", "i", "j", "k", "d"])
  
# Sort the rows of dataframe by "Name" column
rslt_df = details.sort_values(by = "Name")
  
# show the resultant Dataframe
rslt_df

Output:

Example 2: Sort Dataframe rows based on a multiple columns.

# import pandas library as pd
import pandas as pd
  
# List of Tuples
students = [("Ankit", 22, "Up", "Geu"),
           ("Ananya", 31, "Delhi", "Gehu"),
           ("Rahul", 16, "Tokyo", "Abes"),
           ("Simran", 41, "Delhi", "Gehu"),
           ("Shaurya", 33, "Delhi", "Geu"),
           ("Harshita", 35, "Mumbai", "Bhu" ),
           ("Priya", 35, "Mp", "Geu"),
           ("Priya", 34, "Uk", "Geu"),
           ("Jeet", 35, "Guj", "Gehu"),
           ("Ananya", 35, "Up", "Bhu")
            ]
  
# Create a DataFrame object from
# list of tuples with columns
# and indices.
details = pd.DataFrame(students, columns =["Name", "Age"
                                           "Place", "College"],
                        index =[ "b", "c", "a", "e", "f",
                                "g", "i", "j", "k", "d"])
  
# sort Dataframe rows based on a "Name" & "Age" columns
  
# if duplicate value is present in "Name" column
# then sorting will be done according to "Age" column
rslt_df = details.sort_values(by = ["Name", "Age"])
  
# show the resultant Dataframe
rslt_df

Output:

Example 3: Sort Dataframe rows based on columns in Descending Order.

# import pandas library as pd
import pandas as pd
  
# List of Tuples
students = [("Ankit", 22, "Up", "Geu"),
           ("Ananya", 31, "Delhi", "Gehu"),
           ("Rahul", 16, "Tokyo", "Abes"),
           ("Simran", 41, "Delhi", "Gehu"),
           ("Shaurya", 33, "Delhi", "Geu"),
           ("Harshita", 35, "Mumbai", "Bhu" ),
           ("Priya", 35, "Mp", "Geu"),
           ("Priya", 34, "Uk", "Geu"),
           ("Jeet", 35, "Guj", "Gehu"),
           ("Ananya", 35, "Up", "Bhu")
            ]
  
# Create a DataFrame object from
# list of tuples with columns
# and indices.
details = pd.DataFrame(students, columns =["Name", "Age",
                                           "Place", "College"],
                        index =[ "b", "c", "a", "e", "f"
                                "g", "i", "j", "k", "d"])
  
# sort Dataframe rows based on "Name" 
# column in Descending Order
rslt_df = details.sort_values(by = "Name", ascending = False)
  
# show the resultant Dataframe
rslt_df

Output:

Example 4: Sort Dataframe rows based on a column in Place.



# import pandas library as pd
import pandas as pd
  
# List of Tuples
students = [("Ankit", 22, "Up", "Geu"),
           ("Ananya", 31, "Delhi", "Gehu"),
           ("Rahul", 16, "Tokyo", "Abes"),
           ("Simran", 41, "Delhi", "Gehu"),
           ("Shaurya", 33, "Delhi", "Geu"),
           ("Harshita", 35, "Mumbai", "Bhu" ),
           ("Priya", 35, "Mp", "Geu"),
           ("Priya", 34, "Uk", "Geu"),
           ("Jeet", 35, "Guj", "Gehu"),
           ("Ananya", 35, "Up", "Bhu")
            ]
  
# Create a DataFrame object from
# list of tuples with columns
# and indices.
details = pd.DataFrame(students, columns =["Name", "Age",
                                           "Place", "College"],
                        index =[ "b", "c", "a", "e", "f",
                                "g", "i", "j", "k", "d"])
  
# Sort the rows of dataframe by  "Name" 
# column inplace
details.sort_values(by = "Name", inplace = True)
  
# show the resultant Dataframe
details

Output:

Let’s see another simple Dataframe on which we are able to sort columns based on rows.

# import pandas library as pd
import pandas as pd
  
# List of Tuples
students = [
           (75, 50, 60, 70),
           (75, 55, 65, 75),
           (75, 35, 45, 25),
           (75, 90, 60, 70),
           (76, 90, 70, 60),
           (90, 80, 70, 60),
           (65, 10, 30, 20)
            ]
  
# Create a DataFrame object from
# list of tuples with columns
# and indices.
details = pd.DataFrame(students, columns =["Hindi", "Math"
                                           "Science", "English"],
                        index = ["Ankit", "Rahul", "Aishwarya"
                                 "Shivangi", "Priya", "Swapnil",
                                 "Shaurya"])
# show the dataframe
details

Output:

Example 1: Sort columns of a Dataframe based on a single row.

# import pandas library as pd
import pandas as pd
  
# List of Tuples
students = [
           (75, 50, 60, 70),
           (75, 55, 65, 75),
           (75, 35, 45, 25),
           (75, 90, 60, 70),
           (76, 90, 70, 60),
           (90, 80, 70, 60),
           (65, 10, 30, 20)
            ]
  
# Create a DataFrame object from
# list of tuples with columns
# and indices.
details = pd.DataFrame(students, columns =["Hindi", "Math"
                                           "Science", "English"],
                        index = ["Ankit", "Rahul", "Aishwarya"
                                 "Shivangi", "Priya", "Swapnil",
                                 "Shaurya"])
  
# sort columns of a Dataframe based 
# on a "Shivangi" row
rslt_df = details.sort_values(by = "Shivangi", axis = 1)
  
# show the dataframe
rslt_df

Output:

Example 2: Sort columns of a Dataframe in Descending Order based on a single row.

# import pandas library as pd
import pandas as pd
  
# List of Tuples
students = [
           (75, 50, 60, 70),
           (75, 55, 65, 75),
           (75, 35, 45, 25),
           (75, 90, 60, 70),
           (76, 90, 70, 60),
           (90, 80, 70, 60),
           (65, 10, 30, 20)
            ]
  
# Create a DataFrame object from
# list of tuples with columns
# and indices.
details = pd.DataFrame(students, columns =["Hindi", "Math"
                                           "Science", "English"],
                        index = ["Ankit", "Rahul", "Aishwarya"
                                 "Shivangi", "Priya", "Swapnil",
                                 "Shaurya"])
  
# Sort columns of a dataframe in descending order 
# based on a "Shivangi" row 
rslt_df = details.sort_values(by = "Shivangi", axis = 1, ascending = False)
  
rslt_df

Output:

Example 3: Sort columns of a Dataframe based on a multiple rows.