Sorting a pandas DataFrame


You can sort a pandas DataFrame by one or multiple (one or more) columns using sort_values() method and by ascending or descending order. To specify the order, you have to use ascending boolean property; False for descending and True for ascending. By default, it is set to True. By default sort_values() returns a copy DataFrame with the result of the sort. To sort on current DataFrame use inplace=True.

Here below is a very small sample of data that we can practice on. Go ahead and copy it or use your own dataset.

import pandas as pd  # import the pandas library into Python
data = {'firstname': ['Bob', 'Sally', 'Suzie', 'Rohan'],
       'amount': [12, 67, 33, 41],
       'group': ['B', 'A', 'A', 'B']}
df = pd.DataFrame(data)
df

# sorts by group ascending (A, B, C etc.)
df2 = df.sort_values(['group'])
df2

Now I will sort on two columns. First I will sort on group, then amount. The order is important. First I sort on group, then within the group, I sort on amount. In this case both columns are sorted descending. If I had more columns, I could sort on three or more columns if I chose to. We just add to the list of column names and the list of True or False for ascending.

# the default ascending is True
df3 = df.sort_values(['group', 'amount'], ascending = [False, False])
df3

Leave a Reply