Skip to learning content

DATA SCIENCE PYTHON PLAYGROUND

Data Foundations · A little practice goes a long way.

← Inspect lessonsTINY TABLES · REAL PYTHON · YOUR PACE
Selecting data · I11 · 8 MIN

Combine conditions

Combine row tests without losing their meaning.

Exercises within this concept

  1. FollowFollow the techniqueCurrent exercise
  2. ChangeAdapt a requirement
  3. TransferChoose and combine

Understand the idea

Combine row conditions to say exactly which records qualify. Each comparison must have its own parentheses.

Concept sketch: keep only rows passing BOTH testsprice>2fruity?keepnoyesnoyesnonoyesyesyeskeep only rows passing BOTH tests
Illustration · not the exercise output

A small example

For a row with age 4 and species Cat: (age >= 2) is True and (species != "Cat") is False.

Follow the code

Apply the idea to the supplied table. Read from top to bottom; the final line displays the result.

df[(df["price"] > 2.1) & (df["flavour"] == "fruity")]

What each part does

(df["price"] > 2.1)
The first test marks prices above 2.1.
&
Keep a row only when both parenthesised tests are True.
(df["flavour"] == "fruity")
The second test marks fruity rows; == compares values.
df[...]
Use the combined True/False mask to keep matching rows.
Other choices for later exercises
|
Use this instead of & when either test may be True.
~
Reverse a True/False mask.

Your inputs

The editable setup on the right creates df. Run executes the setup and your work from top to bottom.

Candy shop · 6 synthetic rows
candyflavourpriceratingshelf
Gummy Bearfruity1.24.1A
Choco Popchocolate2.14.6B
Mint Bitemint1.53.8A
Berry Loopfruity2.84.4B
Cocoa Cubechocolate3.44.9A
Lemon Dropfruity1.84B

Your task · Follow

Using df, keep rows where price is greater than 2.1 AND flavour equals "fruity".

Hint

Parenthesize each comparison before combining them with &.

Reveal solution

One way to do it. Keep any supplied setup in the editor and use this in the Your work section.

df[(df["price"] > 2.1) & (df["flavour"] == "fruity")]
Optional stretch

Replace & with |, then try ~(df["{c}"] == "{cat}"). Predict which rows return first.

Your task · Follow

Using df, keep rows where price is greater than 2.1 AND flavour equals "fruity".

Tab: indent · Shift+Tab: outdent · Esc, then Tab: leave editor

Edit Python. Control or Command plus Enter runs it. Tab indents by four spaces. Shift plus Tab outdents. Press Escape, then Tab or Shift plus Tab to leave the editor.

Each run executes all editor code in a fresh Python session. Display a value by leaving it on the final line.

Python starts when you open a lesson.

Output

Run your code to see what Python returns.