Bird
Raised Fist0
Pandasdata~20 mins

Adding and removing categories in Pandas - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Categorical Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of adding a new category to a pandas Categorical
What is the output of this code snippet?
Pandas
import pandas as pd
cat = pd.Categorical(['apple', 'banana'], categories=['apple', 'banana'])
cat = cat.add_categories(['cherry'])
print(cat.categories.tolist())
A['apple', 'banana', 'cherry']
B['apple', 'banana']
C['cherry']
D['apple', 'banana', 'cherry', 'date']
Attempts:
2 left
💡 Hint
Think about what add_categories does to the categories list.
❓ data_output
intermediate
2:00remaining
Result of removing a category from a pandas Categorical
What is the output of this code?
Pandas
import pandas as pd
cat = pd.Categorical(['apple', 'banana', 'cherry'], categories=['apple', 'banana', 'cherry'])
cat = cat.remove_categories(['banana'])
print(cat.categories.tolist())
A['apple', 'cherry']
B['apple', 'banana']
C['banana']
D['apple', 'banana', 'cherry']
Attempts:
2 left
💡 Hint
Removing a category deletes it from the categories list.
🔧 Debug
advanced
2:00remaining
Behavior when removing a non-existent category
What happens when running this code?
Pandas
import pandas as pd
cat = pd.Categorical(['apple', 'banana'], categories=['apple', 'banana'])
cat = cat.remove_categories(['cherry'])
AValueError because 'cherry' is not in the categories
BTypeError because remove_categories expects a string, not a list
CNo error, code runs fine
DKeyError because 'cherry' is missing
Attempts:
2 left
💡 Hint
remove_categories ignores categories that do not exist.
🚀 Application
advanced
2:00remaining
Effect of removing a category on data values
Given this code, what is the output of the print statement?
Pandas
import pandas as pd
cat = pd.Categorical(['apple', 'banana', 'cherry', 'banana'], categories=['apple', 'banana', 'cherry'])
cat = cat.remove_categories(['banana'])
print(cat.tolist())
A['apple', 'cherry', 'cherry', 'cherry']
B['apple', nan, 'cherry', nan]
C['apple', 'banana', 'cherry', 'banana']
D['apple', None, 'cherry', None]
Attempts:
2 left
💡 Hint
Removing a category replaces its values with NaN in the data.
🧠 Conceptual
expert
2:00remaining
Why use add_categories instead of directly assigning new categories?
Why is it better to use add_categories to add new categories instead of assigning a new categories list directly?
ADirect assignment automatically updates data values to new categories
BDirect assignment is faster and safer than add_categories
Cadd_categories removes old categories automatically
Dadd_categories preserves existing data values and only adds new categories, avoiding errors
Attempts:
2 left
💡 Hint
Think about what happens to existing data when categories change.

Practice

(1/5)
1. What does the add_categories() method do in pandas categorical data?
easy
A. It converts a column to a categorical type.
B. It removes categories from a categorical column.
C. It adds new possible categories to an existing categorical column.
D. It renames existing categories in a categorical column.

Solution

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

    This method is used to add new possible categories to a pandas categorical column without changing existing data.
  2. Step 2: Differentiate from other methods

    Unlike remove_categories() which removes categories, add_categories() only adds new ones.
  3. Final Answer:

    It adds new possible categories to an existing categorical column. -> Option C
  4. Quick Check:

    add_categories() adds categories [OK]
Hint: Remember: add_categories adds new options, doesn't remove [OK]
Common Mistakes:
  • Confusing add_categories with remove_categories
  • Thinking it changes existing data values
  • Assuming it renames categories
2. Which of the following is the correct syntax to remove categories from a pandas categorical column named df['color']?
easy
A. df['color'].remove_categories(['red', 'blue'])
B. df['color'].drop_categories(['red', 'blue'])
C. df['color'].delete_categories(['red', 'blue'])
D. df['color'].pop_categories(['red', 'blue'])

Solution

  1. Step 1: Recall the correct method name

    The pandas method to remove categories is remove_categories().
  2. Step 2: Match the syntax with the method

    df['color'].remove_categories(['red', 'blue']) uses remove_categories() correctly on the categorical column.
  3. Final Answer:

    df['color'].remove_categories(['red', 'blue']) -> Option A
  4. Quick Check:

    Use remove_categories() to remove categories [OK]
Hint: Remember method name is remove_categories, not drop or delete [OK]
Common Mistakes:
  • Using non-existent methods like drop_categories
  • Confusing remove_categories with add_categories
  • Trying to remove categories with pop or delete
3. Given the code:
import pandas as pd
cat = pd.Categorical(['apple', 'banana', 'apple'], categories=['apple', 'banana', 'cherry'])
cat2 = cat.remove_categories(['banana'])
print(cat2)

What will be the output?
medium
A. [apple, NaN, apple] Categories (2, object): [apple, cherry]
B. [apple, banana, apple] Categories (2, object): [apple, cherry]
C. [apple, NaN, apple] Categories (3, object): [apple, banana, cherry]
D. [apple, banana, apple] Categories (3, object): [apple, banana, cherry]

Solution

  1. Step 1: Understand remove_categories effect on data

    Removing 'banana' category replaces all 'banana' values with NaN and removes 'banana' from categories.
  2. Step 2: Analyze the printed output

    Values become ['apple', NaN, 'apple'] and categories become ['apple', 'cherry'] with length 2.
  3. Final Answer:

    [apple, NaN, apple] Categories (2, object): [apple, cherry] -> Option A
  4. Quick Check:

    Removed category replaced by NaN [OK]
Hint: Removing category replaces values with NaN [OK]
Common Mistakes:
  • Expecting removed category values to stay unchanged
  • Thinking categories length remains same
  • Confusing categories list after removal
4. Consider this code snippet:
import pandas as pd
cat = pd.Categorical(['dog', 'cat', 'bird'], categories=['dog', 'cat', 'bird'])
cat = cat.add_categories('fish')
cat = cat.remove_categories('cat')

What is the error in this code?
medium
A. Categorical cannot have more than 3 categories.
B. add_categories cannot add a single category.
C. You cannot chain add_categories and remove_categories.
D. remove_categories expects a list, not a string.

Solution

  1. Step 1: Check method argument types

    remove_categories() requires a list or iterable of categories to remove, not a single string.
  2. Step 2: Identify the error cause

    Passing 'cat' as a string causes a TypeError or unexpected behavior.
  3. Final Answer:

    remove_categories expects a list, not a string. -> Option D
  4. Quick Check:

    Pass list to remove_categories [OK]
Hint: Always pass list to remove_categories, not single string [OK]
Common Mistakes:
  • Passing single string instead of list to remove_categories
  • Thinking add_categories can't add one item
  • Assuming chaining methods is invalid
5. You have a pandas categorical column df['status'] with categories ['new', 'in_progress', 'done']. You want to add a new category 'archived' and remove 'new' without losing data for other rows. Which sequence of commands achieves this correctly?
hard
A. df['status'] = df['status'].remove_categories(['new']) df['status'].add_categories(['archived'])
B. df['status'] = df['status'].add_categories(['archived']) df['status'] = df['status'].remove_categories(['new'])
C. df['status'].remove_categories(['new']) df['status'].add_categories(['archived'])
D. df['status'].add_categories('archived') df['status'].remove_categories('new')

Solution

  1. Step 1: Add new category before removing

    Adding 'archived' first ensures it exists as a valid category before removal.
  2. Step 2: Remove 'new' category properly

    Removing 'new' replaces its values with NaN, so do this after adding new category and assign back to column.
  3. Step 3: Assign results back to the column

    Both methods return new categorical objects, so assign back to df['status'].
  4. Final Answer:

    df['status'] = df['status'].add_categories(['archived']) df['status'] = df['status'].remove_categories(['new']) -> Option B
  5. Quick Check:

    Add then remove, assign back [OK]
Hint: Add categories first, then remove, assign back [OK]
Common Mistakes:
  • Removing category before adding new one
  • Not assigning back to the DataFrame column
  • Passing string instead of list to methods
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