What if you could filter complex data in seconds instead of hours, without mistakes?
Why Multiple conditions with & and | in Pandas? - Purpose & Use Cases
Imagine you have a big table of customer data and you want to find all customers who are either from New York and have spent more than $100, or are from California and have spent more than $200.
Doing this by checking each row one by one on paper or in a simple list is like searching for a needle in a haystack.
Manually filtering data with many conditions is slow and tiring.
It's easy to make mistakes, like mixing up AND and OR rules or missing some rows.
Also, if the data changes, you have to start all over again.
Using multiple conditions with & (AND) and | (OR) in pandas lets you quickly and correctly filter data.
You write clear rules that pandas applies to every row automatically, saving time and avoiding errors.
filtered = [] for row in data: if (row['city'] == 'New York' and row['spend'] > 100) or (row['city'] == 'California' and row['spend'] > 200): filtered.append(row)
filtered = data[((data['city'] == 'New York') & (data['spend'] > 100)) | ((data['city'] == 'California') & (data['spend'] > 200))]
This lets you quickly find exactly the data you need, even with complex rules, so you can make smart decisions faster.
A marketing team can target customers who meet specific spending and location criteria instantly, improving campaign success.
Manual filtering with many conditions is slow and error-prone.
Using & and | in pandas makes filtering fast and accurate.
This skill helps you handle real-world data questions easily.
Practice
age is greater than 30 and salary is above 50000?Solution
Step 1: Understand the condition type
We want rows where both conditions are true, so this is an AND condition.Step 2: Choose the correct pandas operator
In pandas, & is used for AND between conditions, and each condition must be in parentheses.Final Answer:
Use & to combine the two conditions with parentheses around each. -> Option CQuick Check:
AND condition = & with parentheses [OK]
- Using 'and' instead of & causes errors.
- Not wrapping each condition in parentheses.
- Using | instead of & for AND conditions.
df for rows where df['A'] > 10 or df['B'] < 5?Solution
Step 1: Identify the condition type
The question asks for rows where either condition is true, so this is an OR condition.Step 2: Use correct pandas syntax for OR
In pandas, | is used for OR, and each condition must be wrapped in parentheses inside the DataFrame filter.Final Answer:
df[(df['A'] > 10) | (df['B'] < 5)] -> Option AQuick Check:
OR condition = | with parentheses [OK]
- Using & instead of | for OR conditions.
- Not wrapping conditions in parentheses.
- Using Python 'or' instead of | causes errors.
df below:import pandas as pd
df = pd.DataFrame({'age': [25, 40, 35, 28], 'salary': [40000, 60000, 50000, 45000]})
filtered = df[(df['age'] > 30) & (df['salary'] >= 50000)]
print(filtered)What will be the output?
Solution
Step 1: Check each row against conditions
Row 0: age=25 (no), salary=40000 (no)
Row 1: age=40 (yes), salary=60000 (yes)
Row 2: age=35 (yes), salary=50000 (yes)
Row 3: age=28 (no), salary=45000 (no)Step 2: Select rows where both conditions are true
Rows 1 and 2 satisfy both conditions.Final Answer:
Rows with age > 30 and salary >= 50000: rows 1 and 2 -> Option BQuick Check:
Both conditions true for rows 1 and 2 [OK]
- Confusing & with | and selecting wrong rows.
- Ignoring parentheses causing syntax errors.
- Misreading >= as > or vice versa.
df[(df['score'] > 80) & df['age'] < 30]
Choose the best fix.
Solution
Step 1: Identify the syntax error
The second condition df['age'] < 30 is not wrapped in parentheses, which is required when using &.Step 2: Correct the syntax by adding parentheses
Wrap the second condition in parentheses to fix the error: df[(df['score'] > 80) & (df['age'] < 30)]Final Answer:
Add parentheses around the second condition: df[(df['score'] > 80) & (df['age'] < 30)] -> Option DQuick Check:
Each condition must be in parentheses with & [OK]
- Not using parentheses around all conditions.
- Using 'and' instead of &.
- Changing & to | without reason.
df with columns temperature and humidity. You want to select rows where temperature is between 20 and 30 inclusive, or humidity is below 40. Which of the following code snippets correctly applies these conditions?Solution
Step 1: Understand the condition logic
We want rows where temperature is between 20 and 30 (both conditions combined with AND), OR humidity is below 40.Step 2: Apply correct operator precedence with parentheses
Use parentheses to group the temperature range conditions with & and then combine with | for humidity condition.Final Answer:
df[((df['temperature'] >= 20) & (df['temperature'] <= 30)) | (df['humidity'] < 40)] -> Option AQuick Check:
Group AND conditions, then OR with other condition [OK]
- Missing parentheses causing wrong logic.
- Mixing & and | without grouping.
- Using | inside AND group incorrectly.
Ready to prove it?
Pass the test and this pattern moves unknown
