📖 Scenario: You work in a sales department and have a table showing sales data indexed by Region and Year. You want to rearrange the table so that Year comes before Region in the index.
🎯 Goal: Create a pandas DataFrame with a MultiIndex of Region and Year, then swap the index levels so that Year is the first level and Region is the second.
📋 What You'll Learn
Create a pandas DataFrame with MultiIndex using Region and Year
Add a column Sales with given values
Swap the index levels so that Year is the first level
Ensure the DataFrame index reflects the swapped levels
💡 Why This Matters
🌍 Real World
Swapping index levels helps when you want to reorganize data views, such as changing the priority of grouping in sales reports or time series data.
💼 Career
Data analysts and scientists often need to manipulate MultiIndex DataFrames to prepare data for analysis or visualization.
Progress0 / 4 steps
1
Create the initial MultiIndex DataFrame
Import pandas as pd. Create a MultiIndex from the tuples [('North', 2020), ('North', 2021), ('South', 2020), ('South', 2021)] with names 'Region' and 'Year'. Then create a DataFrame called df with this MultiIndex and a Sales column containing [250, 300, 200, 400].
Pandas
Hint
Use pd.MultiIndex.from_tuples() to create the index and pass it to pd.DataFrame() with the sales data.
2
Add a variable for the new index order
Create a list called new_order with the values ['Year', 'Region'] to represent the desired order of index levels.
Pandas
Hint
Just create a list with the new order of index level names.
3
Swap the index levels using the new order
Use the df.reorder_levels() method with the new_order list to reorder the index levels of df. Assign the result back to df.
Pandas
Hint
Use df.reorder_levels(new_order) to swap the index levels.
4
Verify the index level names after swapping
Assign the list of index level names of df to a variable called index_names using df.index.names.
Pandas
Hint
Use df.index.names to get the list of index level names.
Practice
(1/5)
1. What does the swaplevel() function do in a pandas DataFrame with a multi-level index?
easy
A. It deletes one of the index levels permanently.
B. It switches the positions of two index levels without changing the data.
C. It sorts the DataFrame by the index levels.
D. It converts the multi-level index into columns.
Solution
Step 1: Understand the purpose of swaplevel()
The swaplevel() function is designed to reorder the levels of a multi-level index by swapping two specified levels.
Step 2: Confirm it does not alter data values
Swapping index levels changes only the order of the index labels, not the underlying data or its values.
Final Answer:
It switches the positions of two index levels without changing the data. -> Option B
Quick Check:
swaplevel() swaps index levels [OK]
Hint: Remember: swaplevel() only changes index order, not data [OK]
Common Mistakes:
Thinking swaplevel() deletes index levels
Confusing swaplevel() with sorting functions
Assuming swaplevel() changes data values
2. Which of the following is the correct syntax to swap the first and second levels of a DataFrame's multi-level index named df?
easy
A. df.swaplevel()
B. df.swaplevel(1, 2)
C. df.swaplevel('level1', 'level3')
D. df.swaplevel(0, 1)
Solution
Step 1: Identify index levels by position
Index levels are zero-based, so the first level is 0 and the second is 1.
Step 2: Use swaplevel() with correct positions
Calling df.swaplevel(0, 1) swaps the first and second levels correctly.
Final Answer:
df.swaplevel(0, 1) -> Option D
Quick Check:
swaplevel(0, 1) swaps first two levels [OK]
Hint: Use zero-based positions to swap levels: 0 and 1 for first two [OK]
Common Mistakes:
Using incorrect level numbers like 1 and 2 for first two levels
Calling swaplevel() without arguments
Using level names that don't exist
3. Given the following DataFrame df with a multi-level index:
What will be the first row's index after swapping?
medium
A. (1, 'A')
B. ('A', 1)
C. ('number', 'letter')
D. (10, 20)
Solution
Step 1: Understand original index order
The original index is [('A',1), ('A',2), ('B',1), ('B',2)] with levels 'letter' then 'number'.
Step 2: Swap levels 'letter' and 'number'
After swapping, the order becomes 'number' then 'letter'. So the first index becomes (1, 'A').
Final Answer:
(1, 'A') -> Option A
Quick Check:
Swapped index order changes ('A',1) to (1,'A') [OK]
Hint: Swapping levels flips their order in the index tuple [OK]
Common Mistakes:
Assuming index values stay in same order
Confusing index values with column values
Mixing up level names and positions
4. You try to swap index levels in a DataFrame using df.swaplevel('first', 'second') but get a KeyError. What is the most likely cause?
medium
A. The level names 'first' and 'second' do not exist in the index.
B. swaplevel() requires integer positions, not names.
C. The DataFrame has no multi-level index.
D. You must reset the index before swapping levels.
Solution
Step 1: Check index level names
swaplevel() accepts level names, but if the names given do not exist, a KeyError occurs.
Step 2: Confirm cause of KeyError
The error means 'first' and 'second' are not valid level names in the DataFrame's index.
Final Answer:
The level names 'first' and 'second' do not exist in the index. -> Option A
Quick Check:
KeyError means invalid level names [OK]
Hint: Verify level names exist before swapping [OK]
Common Mistakes:
Assuming swaplevel() only accepts integers
Not checking if DataFrame has multi-level index
Resetting index unnecessarily
5. You have a DataFrame df with a multi-level index named ['city', 'year', 'month']. You want to swap the 'city' and 'month' levels and then sort the DataFrame by the new index order. Which code snippet correctly does this?
hard
A. df_swapped = df.swaplevel('year', 'month').sort_index()
B. df_swapped = df.swaplevel(0, 1).sort_values()
C. df_swapped = df.swaplevel('city', 'month').sort_index()
D. df_swapped = df.swaplevel('city', 'month').reset_index()
Solution
Step 1: Identify correct levels to swap
The levels to swap are 'city' and 'month', which are the first and third levels.
Step 2: Use swaplevel() with level names and sort_index()
Calling swaplevel('city', 'month') swaps these levels. Then sort_index() sorts the DataFrame by the new index order.
Final Answer:
df_swapped = df.swaplevel('city', 'month').sort_index() -> Option C
Quick Check:
Swap specified levels then sort index [OK]
Hint: Swap by names, then sort_index() to reorder rows [OK]
Common Mistakes:
Swapping wrong levels by position
Using sort_values() instead of sort_index()
Resetting index instead of sorting
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.