This code creates a small table of people and their cities. Then it finds who lives in New York or Chicago using isin(). Finally, it shows only those people.
Pandas
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
'city': ['New York', 'Los Angeles', 'New York', 'Chicago']}
df = pd.DataFrame(data)
# We want to find people who live in New York or Chicago
cities_to_find = ['New York', 'Chicago']
# Use isin() to check
mask = df['city'].isin(cities_to_find)
# Filter the DataFrame
filtered_df = df[mask]
print(filtered_df)
OutputSuccess
Important Notes
isin() works with lists, sets, or any iterable of values.
It is case-sensitive when matching strings.
You can combine isin() with other conditions for more complex filters.
Summary
isin() helps find if values belong to a list.
It returns True or False for each value checked.
Use it to filter or mark data easily.
Practice
(1/5)
1. What does the isin() function do in pandas?
easy
A. Checks if each value in a Series or DataFrame is in a given list and returns True or False.
B. Sorts the values in a DataFrame or Series.
C. Calculates the sum of values in a DataFrame column.
D. Removes duplicate values from a DataFrame.
Solution
Step 1: Understand the purpose of isin()
isin() checks if each element in a pandas Series or DataFrame exists in a list or another iterable.
Step 2: Identify the output type
The function returns a boolean Series or DataFrame with True where the value is found and False otherwise.
Final Answer:
Checks if each value in a Series or DataFrame is in a given list and returns True or False. -> Option A
Quick Check:
isin() = membership check [OK]
Hint: Remember: isin() returns True/False for membership [OK]
Common Mistakes:
Thinking isin() sorts data
Confusing isin() with aggregation functions
Assuming it removes duplicates
2. Which of the following is the correct syntax to filter rows in a DataFrame df where column col has values in the list [1, 2, 3]?
easy
A. df.isin(col, [1, 2, 3])
B. df.col.isin([1, 2, 3]) = True
C. df[df.isin(col, [1, 2, 3])]
D. df[df.col.isin([1, 2, 3])]
Solution
Step 1: Use isin() on the column
The correct way is to call isin() on the Series: df.col.isin([1, 2, 3]).
Step 2: Use boolean indexing to filter rows
Wrap the boolean Series inside df[ ... ] to select rows where condition is True.
Final Answer:
df[df.col.isin([1, 2, 3])] -> Option D
Quick Check:
Filter rows with boolean mask = df[df.col.isin([1, 2, 3])] [OK]
Hint: Call isin() on column, then filter with df[...] [OK]
A. The DataFrame df must have a column named 'mask' to filter.
B. The isin() method is called on the whole DataFrame, resulting in a DataFrame of booleans, which cannot be used directly for filtering.
C. The variable mask should be converted to a list before filtering.
D. The list passed to isin() must be a string, not integers.
Solution
Step 1: Understand df.isin([1, 3]) output
This returns a DataFrame of booleans with the same shape as df, not a single boolean Series.
Step 2: Why filtering with DataFrame mask fails
Using a DataFrame of booleans as an index mask causes an error because pandas expects a boolean Series or array matching the index length.
Final Answer:
The isin() method is called on the whole DataFrame, resulting in a DataFrame of booleans, which cannot be used directly for filtering. -> Option B
Quick Check:
Mask must be Series, not DataFrame [OK]
Hint: Use isin() on a column, not whole DataFrame for filtering [OK]
Common Mistakes:
Using DataFrame mask instead of Series mask for filtering
Passing wrong data types to isin()
Trying to filter with a DataFrame of booleans
5. You have a DataFrame df with a column status containing values like 'new', 'pending', 'done', and 'cancelled'. You want to create a new column is_active that is True only if status is 'new' or 'pending'. Which code correctly does this using isin()?
hard
A. df['is_active'] = df['status'] == ['new', 'pending']
B. df['is_active'] = df.isin(['new', 'pending'])
C. df['is_active'] = df['status'].isin(['new', 'pending'])
D. df['is_active'] = df['status'].isin('new', 'pending')
Solution
Step 1: Use isin() on the 'status' column with a list of target values
Correct syntax is df['status'].isin(['new', 'pending']) which returns a boolean Series.
Step 2: Assign the boolean Series to new column 'is_active'
This creates a new column with True where status is 'new' or 'pending', False otherwise.
Final Answer:
df['is_active'] = df['status'].isin(['new', 'pending']) -> Option C
Quick Check:
Use isin() on column with list [OK]
Hint: Assign isin() result directly to new column [OK]
Common Mistakes:
Calling isin() on whole DataFrame
Passing multiple arguments instead of a list
Using equality operator with list
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.