Understand the idea
Parse date strings before comparing calendar dates. An explicit format tells pandas which part is the year, month and day.
A small example
"2026-08-04" with "%Y-%m-%d" means 4 August 2026. Invalid text becomes NaT with errors="coerce".
Follow the code
Apply the idea to the supplied table. Read from top to bottom; the final line displays the result.
df["date"] = pd.to_datetime(df["date"], format="%Y-%m-%d", errors="coerce")
dfWhat each part does
format="%Y-%m-%d"- four-digit year, month, day
errors="coerce"- invalid date becomes NaT
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, parse date using year-month-day order.
- Keep invalid dates as NaT and retain all rows.
- Keep the changes in df and display it.
- Use: to_datetime().
Hint
Parse with the explicit year-month-day format; invalid dates should remain missing.
Reveal solution
One way to do it. Keep any supplied setup in the editor and use this in the Your work section.
df["date"] = pd.to_datetime(df["date"], format="%Y-%m-%d", errors="coerce")
df