Pandas: Sort a MultiIndex of a DataFrame and on various index levels
Pandas Indexing: Exercise-16 with Solution
Write a Pandas program to sort a MultiIndex of a DataFrame. Also sort on various levels of index.
Sample Solution:
Python Code :
import pandas as pd
import numpy as np
sales_arrays = [['sale1', 'sale1', 'sale3', 'sale3', 'sale2', 'sale2', 'sale4', 'sale4'],
['city1', 'city2', 'city1', 'city2', 'city1', 'city2', 'city1', 'city2']]
sales_tuples = list(zip(*sales_arrays))
sales_index = pd.MultiIndex.from_tuples(sales_tuples, names=['sale', 'city'])
print(sales_tuples)
print("\nConstruct a Dataframe using the said MultiIndex levels: ")
df = pd.DataFrame(np.random.randn(8, 5), index=sales_index)
print(df)
print("\nSort on MultiIndex DataFrame:")
df1 = df.sort_index()
print("\nSort on Index level=0 of the DataFrame:")
df2 = df.sort_index(level=0)
print(df2)
print("\nSort on Index level=1 of the DataFrame:")
df2 = df.sort_index(level=1)
print(df2)
print("\nPass a level name to sort the DataFrame:")
df3 = df.sort_index(level="city")
print(df3)
Sample Output:
[('sale1', 'city1'), ('sale1', 'city2'), ('sale3', 'city1'), ('sale3', 'city2'), ('sale2', 'city1'), ('sale2', 'city2'), ('sale4', 'city1'), ('sale4', 'city2')] Construct a Dataframe using the said MultiIndex levels: 0 1 2 3 4 sale city sale1 city1 -0.089370 0.705290 -0.666095 1.123766 0.913882 city2 1.191204 0.109838 -0.103562 -0.184452 -1.955661 sale3 city1 0.545379 0.463709 0.024852 0.986675 0.615907 city2 -0.258394 -0.453250 -0.536596 -0.219055 0.430811 sale2 city1 -1.073173 0.555573 -0.112394 -0.100727 -0.241135 city2 -0.876008 0.919629 0.296234 -0.507162 -1.813040 sale4 city1 0.515350 0.683498 0.405508 2.010065 0.170758 city2 0.695778 -2.036874 -0.543257 0.601770 -0.539135 Sort on MultiIndex DataFrame: Sort on Index level=0 of the DataFrame: 0 1 2 3 4 sale city sale1 city1 -0.089370 0.705290 -0.666095 1.123766 0.913882 city2 1.191204 0.109838 -0.103562 -0.184452 -1.955661 sale2 city1 -1.073173 0.555573 -0.112394 -0.100727 -0.241135 city2 -0.876008 0.919629 0.296234 -0.507162 -1.813040 sale3 city1 0.545379 0.463709 0.024852 0.986675 0.615907 city2 -0.258394 -0.453250 -0.536596 -0.219055 0.430811 sale4 city1 0.515350 0.683498 0.405508 2.010065 0.170758 city2 0.695778 -2.036874 -0.543257 0.601770 -0.539135 Sort on Index level=1 of the DataFrame: 0 1 2 3 4 sale city sale1 city1 -0.089370 0.705290 -0.666095 1.123766 0.913882 sale2 city1 -1.073173 0.555573 -0.112394 -0.100727 -0.241135 sale3 city1 0.545379 0.463709 0.024852 0.986675 0.615907 sale4 city1 0.515350 0.683498 0.405508 2.010065 0.170758 sale1 city2 1.191204 0.109838 -0.103562 -0.184452 -1.955661 sale2 city2 -0.876008 0.919629 0.296234 -0.507162 -1.813040 sale3 city2 -0.258394 -0.453250 -0.536596 -0.219055 0.430811 sale4 city2 0.695778 -2.036874 -0.543257 0.601770 -0.539135 Pass a level name to sort the DataFrame: 0 1 2 3 4 sale city sale1 city1 -0.089370 0.705290 -0.666095 1.123766 0.913882 sale2 city1 -1.073173 0.555573 -0.112394 -0.100727 -0.241135 sale3 city1 0.545379 0.463709 0.024852 0.986675 0.615907 sale4 city1 0.515350 0.683498 0.405508 2.010065 0.170758 sale1 city2 1.191204 0.109838 -0.103562 -0.184452 -1.955661 sale2 city2 -0.876008 0.919629 0.296234 -0.507162 -1.813040 sale3 city2 -0.258394 -0.453250 -0.536596 -0.219055 0.430811 sale4 city2 0.695778 -2.036874 -0.543257 0.601770 -0.539135
Python Code Editor:
Have another way to solve this solution? Contribute your code (and comments) through Disqus.
Next: Write a Pandas program to extract elements in the given positional indices along an axis of a dataframe.What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://w3resource.com/python-exercises/pandas/index/pandas-indexing-exercise-16.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics