Understand the idea
dropna removes rows missing required fields. Use subset to restrict the check to fields the report actually needs.
A small example
A row with price=8 and discount=missing survives subset=["price"], but fails subset=["price", "discount"].
Follow the code
Apply the idea to the supplied table. Read from top to bottom; the final line displays the result.
df["price"] = pd.to_numeric(df["price"], errors="coerce")
df = df.dropna(subset=["price"])
dfWhat each part does
dropna(subset=["price"])- require a known price
subset=- consider only these columns
Your inputs
The editable setup on the right creates df. Run executes the setup and your work from top to bottom.
| order | drink | size | price | tip | date |
|---|---|---|---|---|---|
| 101 | " latte " | LARGE | 6.20 | 1 | 2026-06-01 |
| 102 | TEA | small | 3.10 | 0.5 | 2026-06-02 |
| 103 | " mocha " | LARGE | oops | None | not a date |
| 104 | Latte | Small | None | 0.8 | 2026-06-04 |
| 104 | Latte | Small | None | 0.8 | 2026-06-04 |
| 105 | "tea " | SMALL | 4.20 | 0.6 | 2026-06-05 |
| 106 | ESPRESSO | small | 2.50 | 0.2 | 2026-06-06 |
| 107 | " mocha" | large | 6.80 | 1.5 | 2026-06-07 |
Your task · Follow
- Using df, convert price to numeric, then keep only rows with a known numeric price.
- Do not require a known tip or date.
- Keep the changes in df and display it.
- Use: to_numeric(), dropna().
Hint
subset names the fields required by this report; unrelated missing fields must not remove a row.
Reveal solution
One way to do it. Keep any supplied setup in the editor and use this in the Your work section.
df["price"] = pd.to_numeric(df["price"], errors="coerce")
df = df.dropna(subset=["price"])
df