0
0
Pandasdata~20 mins

Sorting MultiIndex in Pandas - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
MultiIndex Sorting Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of sorting a MultiIndex DataFrame by level
What is the output of the following code snippet?
Pandas
import pandas as pd

index = pd.MultiIndex.from_tuples([('b', 2), ('a', 1), ('b', 1), ('a', 2)])
df = pd.DataFrame({'value': [4, 3, 2, 1]}, index=index)
sorted_df = df.sort_index(level=0)
print(sorted_df)
A
       value
(b, 1)      2
(b, 2)      4
(a, 1)      3
(a, 2)      1
B
       value
(a, 1)      3
(a, 2)      1
(b, 1)      2
(b, 2)      4
C
       value
(a, 2)      1
(a, 1)      3
(b, 2)      4
(b, 1)      2
D
       value
(b, 2)      4
(b, 1)      2
(a, 2)      1
(a, 1)      3
Attempts:
2 left
💡 Hint
Sorting by level=0 sorts by the first index level alphabetically.
data_output
intermediate
1:30remaining
Number of rows after sorting MultiIndex with ascending=False
Given the following DataFrame, how many rows does the sorted DataFrame have after sorting by both levels descending?
Pandas
import pandas as pd

index = pd.MultiIndex.from_tuples([('x', 3), ('y', 1), ('x', 1), ('y', 2)])
df = pd.DataFrame({'score': [10, 20, 30, 40]}, index=index)
sorted_df = df.sort_index(level=[0,1], ascending=False)
print(len(sorted_df))
A1
B2
C3
D4
Attempts:
2 left
💡 Hint
Sorting does not remove rows, it only reorders them.
🔧 Debug
advanced
1:30remaining
Identify the error in sorting MultiIndex with invalid level
What error does the following code raise?
Pandas
import pandas as pd

index = pd.MultiIndex.from_tuples([('a', 1), ('b', 2)])
df = pd.DataFrame({'val': [5, 6]}, index=index)
sorted_df = df.sort_index(level=2)
print(sorted_df)
AIndexError: Too many levels: Index has only 2 levels, not 3
BNo error, prints sorted DataFrame
CTypeError: level must be int or str
DKeyError: 2
Attempts:
2 left
💡 Hint
Check the number of levels in the MultiIndex before sorting by level.
🚀 Application
advanced
2:00remaining
Sorting MultiIndex DataFrame by multiple levels with mixed ascending order
You have a MultiIndex DataFrame with two levels: 'city' and 'year'. You want to sort it so that cities are in ascending order but years are in descending order. Which code snippet achieves this?
Pandas
import pandas as pd

index = pd.MultiIndex.from_tuples([('NY', 2020), ('LA', 2019), ('NY', 2019), ('LA', 2020)])
df = pd.DataFrame({'population': [8, 4, 7, 5]}, index=index)
Adf.sort_index(level=['city', 'year'], ascending=[True, False])
Bdf.sort_index(level=['city', 'year'], ascending=[False, True])
Cdf.sort_index(level=[0, 1], ascending=[False, False])
Ddf.sort_index(level=[1, 0], ascending=[True, False])
Attempts:
2 left
💡 Hint
The ascending parameter accepts a list matching the levels order.
🧠 Conceptual
expert
1:30remaining
Effect of sort_index on MultiIndex with duplicates
Consider a MultiIndex DataFrame with duplicate index entries. What is the effect of calling sort_index() on this DataFrame?
AIt raises an error because duplicates are not allowed in MultiIndex.
BIt removes duplicate index entries and sorts the DataFrame.
CIt sorts the DataFrame by the MultiIndex levels but keeps duplicate index entries intact.
DIt sorts the DataFrame and resets the index to default integers.
Attempts:
2 left
💡 Hint
Think about whether sorting changes data or just order.