Bird
Raised Fist0
Pandasdata~20 mins

drop_duplicates() for removal in Pandas - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Drop Duplicates Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of drop_duplicates() with subset and keep parameters

What is the output DataFrame after running the following code?

Pandas
import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 2, 3, 3, 3],
    'B': ['x', 'y', 'y', 'z', 'z', 'z'],
    'C': [10, 20, 20, 30, 30, 30]
})

result = df.drop_duplicates(subset=['A'], keep='last')
print(result)
A
   A  B   C
0  1  x  10
2  2  y  20
5  3  z  30
B
   A  B   C
0  1  x  10
1  2  y  20
3  3  z  30
C
   A  B   C
0  1  x  10
1  2  y  20
2  2  y  20
3  3  z  30
4  3  z  30
5  3  z  30
D
   A  B   C
0  1  x  10
3  3  z  30
Attempts:
2 left
💡 Hint

Remember that subset=['A'] means duplicates are checked only on column 'A'. The keep='last' parameter keeps the last occurrence.

❓ data_output
intermediate
1:30remaining
Number of rows after drop_duplicates() with keep=False

Given the DataFrame below, how many rows remain after removing all duplicates (no rows kept) based on columns 'A' and 'B'?

Pandas
import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 2, 3, 3, 3],
    'B': ['x', 'y', 'y', 'z', 'z', 'w'],
    'C': [10, 20, 20, 30, 30, 40]
})

result = df.drop_duplicates(subset=['A', 'B'], keep=False)
print(len(result))
A2
B3
C4
D5
Attempts:
2 left
💡 Hint

Using keep=False removes all rows that have duplicates in the specified subset.

🔧 Debug
advanced
1:30remaining
Identify the error in drop_duplicates() usage

What error will this code raise?

Pandas
import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})

result = df.drop_duplicates(subset='A,B')
print(result)
ATypeError: unhashable type: 'list'
BNo error, prints the original DataFrame
CValueError: subset must be a list-like of column labels
DKeyError: 'A,B'
Attempts:
2 left
💡 Hint

Check the type and format of the subset argument.

🚀 Application
advanced
2:00remaining
Remove duplicates keeping first occurrence per group

You have a DataFrame with sales data. You want to keep only the first sale per customer. Which code snippet achieves this?

Pandas
import pandas as pd

df = pd.DataFrame({
    'customer_id': [101, 102, 101, 103, 102],
    'sale_amount': [200, 150, 300, 400, 100],
    'date': ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04', '2023-01-05']
})
Adf.drop_duplicates(subset=['customer_id', 'sale_amount'], keep='last')
Bdf.drop_duplicates(subset=['sale_amount'], keep='last')
Cdf.drop_duplicates(subset=['customer_id'], keep='first')
Ddf.drop_duplicates(subset=['date'], keep=False)
Attempts:
2 left
💡 Hint

Think about which column identifies customers and which occurrence to keep.

🧠 Conceptual
expert
1:30remaining
Effect of drop_duplicates() on DataFrame index

After using drop_duplicates() on a DataFrame, what happens to the index of the resulting DataFrame?

AThe index is converted to a MultiIndex based on duplicate columns.
BThe original index values are preserved, including gaps from dropped rows.
CThe index is reset to a continuous range starting at 0 automatically.
DThe index is dropped and replaced with a default integer index only if <code>reset_index()</code> is called.
Attempts:
2 left
💡 Hint

Consider what happens to row labels when rows are removed but no explicit index reset is done.

Practice

(1/5)
1. What does the drop_duplicates() function do in pandas?
easy
A. Removes repeated rows from a DataFrame
B. Adds new rows to a DataFrame
C. Sorts the DataFrame by column values
D. Changes the data type of columns

Solution

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

    This function is designed to remove rows that appear more than once in a DataFrame.
  2. Step 2: Compare options with function behavior

    Only Removes repeated rows from a DataFrame correctly describes removing repeated rows. Other options describe different functions.
  3. Final Answer:

    Removes repeated rows from a DataFrame -> Option A
  4. Quick Check:

    drop_duplicates() removes repeats [OK]
Hint: Remember: drop_duplicates() cleans repeated rows fast [OK]
Common Mistakes:
  • Confusing drop_duplicates() with sorting functions
  • Thinking it adds or modifies data instead of removing duplicates
  • Assuming it changes data types
2. Which of the following is the correct syntax to remove duplicate rows from a DataFrame df?
easy
A. df.drop_duplicate_rows()
B. df.remove_duplicates()
C. df.delete_duplicates()
D. df.drop_duplicates()

Solution

  1. Step 1: Recall the exact pandas method name

    The correct method to remove duplicates is drop_duplicates().
  2. Step 2: Check each option for correct syntax

    Only df.drop_duplicates() uses the correct method name and syntax. Others are invalid pandas methods.
  3. Final Answer:

    df.drop_duplicates() -> Option D
  4. Quick Check:

    Correct method name is drop_duplicates() [OK]
Hint: Use exact method name: drop_duplicates() [OK]
Common Mistakes:
  • Using incorrect method names like remove_duplicates()
  • Adding extra words like delete or rows
  • Confusing with other DataFrame methods
3. Given the DataFrame df below:
import pandas as pd
data = {'A': [1, 2, 2, 3], 'B': ['x', 'y', 'y', 'z']}
df = pd.DataFrame(data)
print(df.drop_duplicates())

What will be the output?
medium
A. Rows with index 1, 2, and 3
B. Rows with index 0, 1, and 3
C. Rows with index 0, 2, and 3
D. All rows remain unchanged

Solution

  1. Step 1: Identify duplicate rows in the DataFrame

    Rows 2 and 3 have the same values (A=2, B='y'). So one will be removed.
  2. Step 2: Understand default behavior of drop_duplicates()

    By default, it keeps the first occurrence and removes later duplicates. So row 1 stays, row 2 is removed.
  3. Final Answer:

    Rows with index 0, 1, and 3 -> Option B
  4. Quick Check:

    First duplicates kept, later removed [OK]
Hint: drop_duplicates() keeps first by default [OK]
Common Mistakes:
  • Assuming last duplicate is kept instead of first
  • Thinking all duplicates are removed including first
  • Confusing row indices after removal
4. What is wrong with this code snippet to remove duplicates from DataFrame df?
df.drop_duplicates(inplace=True)
print(df.drop_duplicates())
medium
A. Calling drop_duplicates() twice is redundant
B. Using inplace=True and then printing drop_duplicates() returns original data
C. drop_duplicates() does not have inplace parameter
D. print statement syntax is incorrect

Solution

  1. Step 1: Understand inplace=True effect

    Using inplace=True modifies df directly by removing duplicates.
  2. Step 2: Analyze print statement

    After the first call, df is already deduplicated. The second call to df.drop_duplicates() is redundant as it returns the same DataFrame since there are no duplicates left.
  3. Final Answer:

    Calling drop_duplicates() twice is redundant -> Option A
  4. Quick Check:

    Second call redundant after inplace [OK]
Hint: inplace=True changes df; extra drop_duplicates() returns copy [OK]
Common Mistakes:
  • Thinking drop_duplicates() lacks inplace parameter
  • Assuming print statement is wrong syntax
  • Believing calling twice causes error
5. You have a DataFrame df with columns ['Name', 'Age', 'City']. You want to remove duplicates only based on Name and City, keeping the last occurrence. Which code achieves this?
hard
A. df.drop_duplicates(columns=['Name', 'City'], keep='last')
B. df.drop_duplicates(subset=['Name', 'City'], keep='first')
C. df.drop_duplicates(subset=['Name', 'City'], keep='last')
D. df.drop_duplicates(subset=['Age'], keep='last')

Solution

  1. Step 1: Use subset parameter to specify columns

    To check duplicates only on 'Name' and 'City', use subset=['Name', 'City'].
  2. Step 2: Set keep='last' to keep last occurrence

    keep='last' keeps the last duplicate row, removing earlier ones.
  3. Final Answer:

    df.drop_duplicates(subset=['Name', 'City'], keep='last') -> Option C
  4. Quick Check:

    subset selects columns; keep='last' keeps last duplicate [OK]
Hint: Use subset for columns, keep='last' to keep last duplicate [OK]
Common Mistakes:
  • Using 'columns' instead of 'subset' parameter
  • Forgetting to set keep='last' to keep last occurrence
  • Selecting wrong columns for subset
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