0
0
Pandasdata~5 mins

Sorting MultiIndex in Pandas

Choose your learning style9 modes available
Introduction

Sorting a MultiIndex helps organize complex data with multiple levels, making it easier to read and analyze.

You have a table with rows grouped by categories and subcategories and want to order them.
You want to prepare data for reports where hierarchical sorting is needed.
You need to quickly find data by sorting multiple index levels.
You want to visualize data with a clear order on multiple grouping levels.
Syntax
Pandas
DataFrame.sort_index(level=None, ascending=True, inplace=False, sort_remaining=True)

level specifies which index levels to sort. Use names or numbers.

ascending can be a bool or list of bools to control order per level.

Examples
Sorts the DataFrame by all index levels in ascending order.
Pandas
df.sort_index()
Sorts only the first index level in descending order.
Pandas
df.sort_index(level=0, ascending=False)
Sorts first level ascending and second level descending.
Pandas
df.sort_index(level=[0,1], ascending=[True, False])
Sample Program

This code creates a DataFrame with a MultiIndex of letters and numbers. It shows the original order, then sorts by both index levels ascending, and finally sorts with the first level ascending and second level descending.

Pandas
import pandas as pd

# Create a MultiIndex DataFrame
index = pd.MultiIndex.from_tuples(
    [('A', 2), ('A', 1), ('B', 2), ('B', 1)],
    names=['letter', 'number']
)
data = {'value': [10, 20, 30, 40]}
df = pd.DataFrame(data, index=index)

print('Original DataFrame:')
print(df)

# Sort by both levels ascending
sorted_df = df.sort_index()
print('\nSorted DataFrame by both levels ascending:')
print(sorted_df)

# Sort by first level ascending, second level descending
sorted_df2 = df.sort_index(level=['letter', 'number'], ascending=[True, False])
print('\nSorted DataFrame by first level ascending, second level descending:')
print(sorted_df2)
OutputSuccess
Important Notes

If you do not specify level, all index levels are sorted.

Use inplace=True to modify the DataFrame directly without creating a new one.

Sorting MultiIndex helps when you want to group and order data clearly for analysis or visualization.

Summary

Sorting MultiIndex organizes data by multiple index levels.

You can sort all levels or select specific ones.

Control ascending or descending order per level.