0
0
Pandasdata~20 mins

melt() for unpivoting in Pandas - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Melt Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of melt() with id_vars and value_vars
What is the output DataFrame after running the following code?
Pandas
import pandas as pd

df = pd.DataFrame({
    'City': ['NY', 'LA'],
    '2019': [100, 200],
    '2020': [110, 210]
})

result = pd.melt(df, id_vars=['City'], value_vars=['2019', '2020'], var_name='Year', value_name='Population')
print(result)
A
  City  Year  Population
0   NY  2019         100
1   LA  2019         200
2   NY  2020         110
3   LA  2020         210
B
  City  Year  Population
0   NY  2019         110
1   LA  2019         210
2   NY  2020         100
3   LA  2020         200
C
  City  Year  Population
0   NY  2019         100
1   NY  2020         110
2   LA  2019         200
3   LA  2020         210
D
  City  Year  Population
0   NY  2019         200
1   LA  2019         100
2   NY  2020         210
3   LA  2020         110
Attempts:
2 left
💡 Hint
Remember melt keeps id_vars as is and stacks value_vars into rows.
data_output
intermediate
1:30remaining
Number of rows after melting
Given a DataFrame with 3 rows and 4 columns, if you melt it using 1 column as id_vars and 3 columns as value_vars, how many rows will the melted DataFrame have?
Pandas
import pandas as pd

df = pd.DataFrame({
    'ID': [1, 2, 3],
    'A': [10, 20, 30],
    'B': [40, 50, 60],
    'C': [70, 80, 90]
})

melted = pd.melt(df, id_vars=['ID'], value_vars=['A', 'B', 'C'])
print(len(melted))
A12
B3
C9
D6
Attempts:
2 left
💡 Hint
Each row is repeated for each value_var column.
🔧 Debug
advanced
2:00remaining
Identify the error in melt usage
What error will this code raise and why?
Pandas
import pandas as pd

df = pd.DataFrame({
    'Name': ['Alice', 'Bob'],
    'Math': [90, 80],
    'Science': [85, 95]
})

result = pd.melt(df, id_vars='Name', value_vars='Math,Science')
print(result)
ANo error, prints melted DataFrame
BKeyError: 'Math,Science'
CValueError: value_vars must be list-like
DTypeError: id_vars must be list-like, not str
Attempts:
2 left
💡 Hint
Check the type of value_vars argument.
🚀 Application
advanced
2:30remaining
Using melt to reshape sales data
You have a DataFrame with columns: 'Store', 'Jan_Sales', 'Feb_Sales', 'Mar_Sales'. You want to reshape it so that each row shows 'Store', 'Month', and 'Sales'. Which melt call achieves this?
Pandas
import pandas as pd

df = pd.DataFrame({
    'Store': ['A', 'B'],
    'Jan_Sales': [100, 150],
    'Feb_Sales': [110, 160],
    'Mar_Sales': [120, 170]
})
Apd.melt(df, id_vars=['Store'], var_name='Month', value_name='Sales')
Bpd.melt(df, id_vars=['Store'], value_vars=['Store'], var_name='Month', value_name='Sales')
Cpd.melt(df, value_vars=['Jan_Sales', 'Feb_Sales', 'Mar_Sales'], var_name='Month', value_name='Sales')
Dpd.melt(df, id_vars=['Store'], value_vars=['Jan_Sales', 'Feb_Sales', 'Mar_Sales'], var_name='Month', value_name='Sales')
Attempts:
2 left
💡 Hint
Specify id_vars and value_vars explicitly to keep 'Store' and unpivot sales columns.
🧠 Conceptual
expert
3:00remaining
Understanding melt with multiple id_vars
Given a DataFrame with columns ['Region', 'Year', 'Q1', 'Q2'], what does melt(df, id_vars=['Region', 'Year'], value_vars=['Q1', 'Q2']) do?
ACreates a DataFrame with columns ['Region', 'Year', 'variable', 'value'], where 'Q1' and 'Q2' values are stacked under 'value' for each Region and Year.
BCreates a DataFrame with columns ['Region', 'Year', 'Q1', 'Q2'] unchanged.
CCreates a DataFrame with columns ['Region', 'variable', 'value'] dropping 'Year'.
DCreates a DataFrame with columns ['Year', 'variable', 'value'] dropping 'Region'.
Attempts:
2 left
💡 Hint
melt keeps all id_vars columns as is and stacks value_vars into two columns.