Bird
Raised Fist0
Pandasdata~20 mins

Setting a column as index in Pandas - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Index Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate
2:00remaining
What is the output of setting a column as index?
Given the DataFrame:
import pandas as pd
df = pd.DataFrame({"Name": ["Alice", "Bob"], "Age": [25, 30]})
df2 = df.set_index("Name")
print(df2)

What will be printed?
Pandas
import pandas as pd
df = pd.DataFrame({"Name": ["Alice", "Bob"], "Age": [25, 30]})
df2 = df.set_index("Name")
print(df2)
A
   Name  Age
0  Alice   25
1    Bob   30
B
   Age
0   25
1   30
C
Name  Age
Alice 25
Bob 30
D
       Age
Name       
Alice    25
Bob      30
Attempts:
2 left
💡 Hint
Setting a column as index moves that column to the row labels.
📝 Syntax
intermediate
2:00remaining
Which code correctly sets 'ID' as index in pandas?
Choose the code snippet that correctly sets the 'ID' column as the index of DataFrame df.
Pandas
import pandas as pd
df = pd.DataFrame({"ID": [1, 2], "Value": [100, 200]})
Adf.set_index('ID')
Bdf.set_index(ID)
Cdf.set_index(['ID'])
Ddf.set_index(ID, inplace=True)
Attempts:
2 left
💡 Hint
The column name must be a string inside quotes.
❓ optimization
advanced
2:00remaining
How to set a column as index modifying the original DataFrame?
You want to set the 'Date' column as index in DataFrame df and keep the change without creating a new DataFrame. Which option does this efficiently?
Pandas
import pandas as pd
df = pd.DataFrame({"Date": ["2023-01-01", "2023-01-02"], "Sales": [200, 250]})
Adf.index = df.set_index('Date')
Bdf = df.set_index('Date')
Cdf.set_index('Date', inplace=True)
Ddf.index = df['Date']
Attempts:
2 left
💡 Hint
Look for the parameter that changes the DataFrame in place.
🔧 Debug
advanced
2:00remaining
Why does this code raise an error?
Consider this code:
import pandas as pd
df = pd.DataFrame({"A": [1, 2], "B": [3, 4]})
df.set_index(A)

Why does it raise an error?
Pandas
import pandas as pd
df = pd.DataFrame({"A": [1, 2], "B": [3, 4]})
df.set_index(A)
ATypeError because set_index expects a list
BNameError because A is not defined as a variable
CKeyError because column 'A' does not exist
DSyntaxError due to missing quotes
Attempts:
2 left
💡 Hint
Check if the column name is passed as a string or variable.
🧠 Conceptual
expert
2:00remaining
What happens if you set a column as index but it contains duplicate values?
If you run df.set_index('Category') where 'Category' column has duplicate values, what is the effect on the DataFrame index?
AThe index will allow duplicates, so multiple rows can share the same index label
BThe DataFrame converts the index to a MultiIndex to handle duplicates
CDuplicates are automatically removed from the index
DIt raises a ValueError because index must be unique
Attempts:
2 left
💡 Hint
Think about whether pandas requires index labels to be unique.

Practice

(1/5)
1. What does the set_index() method do in pandas?
easy
A. It sorts the DataFrame by a column.
B. It deletes a column from the DataFrame.
C. It adds a new column to the DataFrame.
D. It sets a specified column as the index of the DataFrame.

Solution

  1. Step 1: Understand the purpose of set_index()

    The set_index() method changes the row labels to the values of a specified column.
  2. Step 2: Compare with other options

    Options A, B, and D describe different DataFrame operations, not setting the index.
  3. Final Answer:

    It sets a specified column as the index of the DataFrame. -> Option D
  4. Quick Check:

    set_index() changes row labels to a column [OK]
Hint: Remember: set_index() changes row labels to a column [OK]
Common Mistakes:
  • Confusing set_index() with drop() method
  • Thinking set_index() adds a new column
  • Assuming set_index() sorts data
2. Which of the following is the correct syntax to set the column 'Name' as the index of DataFrame df without modifying df itself?
easy
A. df.set_index('Name', inplace=True)
B. df.set_index('Name')
C. df.set_index(Name, inplace=False)
D. df.set_index('Name', drop=False)

Solution

  1. Step 1: Understand inplace parameter

    By default, inplace=False, so df.set_index('Name') returns a new DataFrame without changing df.
  2. Step 2: Analyze options

    df.set_index('Name', inplace=True) modifies df inplace. df.set_index('Name', inplace=False) is invalid because inplace=False is default and usually omitted. df.set_index('Name', drop=False) keeps the column but does not specify inplace, so it returns a new DataFrame.
  3. Final Answer:

    df.set_index('Name') -> Option B
  4. Quick Check:

    Default inplace=False means returns new DataFrame [OK]
Hint: Omit inplace to keep original DataFrame unchanged [OK]
Common Mistakes:
  • Using inplace=True when wanting a new DataFrame
  • Confusing drop parameter with inplace
  • Adding invalid parameters
3. Given the DataFrame df below:
   ID  Score
0  101     88
1  102     92
2  103     85

What will be the output of df.set_index('ID')?
medium
A.
     ID  Score
0  101     88
1  102     92
2  103     85
B.
   ID  Score
0  101     88
1  102     92
2  103     85
C.
     Score
ID          
101      88
102      92
103      85
D.
   Score
ID       
0     88
1     92
2     85

Solution

  1. Step 1: Understand set_index('ID')

    This sets the 'ID' column as the index, so 'ID' values become row labels and are no longer columns.
  2. Step 2: Check output format

    The resulting DataFrame shows 'Score' as the only column, indexed by 'ID' values 101, 102, 103.
  3. Final Answer:

    Score ID 101 88 102 92 103 85 -> Option C
  4. Quick Check:

    set_index moves column to index =
         Score
    ID          
    101      88
    102      92
    103      85
    [OK]
Hint: Index column moves from data to row labels [OK]
Common Mistakes:
  • Expecting the index column to remain as a data column
  • Confusing output with original DataFrame
  • Misreading index as a new column
4. You run the code:
df.set_index('Age', inplace=True)

but get a KeyError: 'Age'. What is the most likely cause?
medium
A. The column 'Age' does not exist in the DataFrame.
B. You forgot to import pandas.
C. You need to reset the index before setting a new one.
D. The inplace parameter must be False.

Solution

  1. Step 1: Understand KeyError meaning

    A KeyError means the specified key (column) is not found in the DataFrame.
  2. Step 2: Analyze options

    The column 'Age' does not exist in the DataFrame. correctly identifies the missing column. You forgot to import pandas. is unrelated to KeyError. You need to reset the index before setting a new one. is unnecessary; you can set any existing column as index. The inplace parameter must be False. is incorrect; inplace can be True or False.
  3. Final Answer:

    The column 'Age' does not exist in the DataFrame. -> Option A
  4. Quick Check:

    KeyError means missing column [OK]
Hint: Check column names before set_index to avoid KeyError [OK]
Common Mistakes:
  • Assuming inplace=True causes KeyError
  • Ignoring column name typos
  • Thinking reset_index is required first
5. You have a DataFrame df with columns ['City', 'Population', 'Area']. You want to set 'City' as the index but keep it as a column too. Which code achieves this?
hard
A. df.set_index('City', drop=False, inplace=True)
B. df.set_index('City', inplace=True)
C. df.set_index('City', drop=True, inplace=False)
D. df.set_index('City', keep=True)

Solution

  1. Step 1: Understand drop parameter

    By default, drop=True removes the column from data when setting it as index. To keep it, use drop=False.
  2. Step 2: Apply inplace to modify original DataFrame

    Using inplace=True changes df directly.
  3. Step 3: Analyze options

    df.set_index('City', drop=False, inplace=True) correctly uses drop=False and inplace=True. df.set_index('City', inplace=True) drops the column. df.set_index('City', drop=True, inplace=False) returns new DataFrame but drops column. df.set_index('City', keep=True) uses invalid parameter keep.
  4. Final Answer:

    df.set_index('City', drop=False, inplace=True) -> Option A
  5. Quick Check:

    drop=False keeps column when setting index [OK]
Hint: Use drop=False to keep column when setting index [OK]
Common Mistakes:
  • Forgetting drop=False to keep the column
  • Using invalid parameters like keep=True
  • Not using inplace when wanting to modify original DataFrame
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard