Skip to learning content

DATA SCIENCE PYTHON PLAYGROUND

Data Foundations · A little practice goes a long way.

← Wrangle / Preprocess lessonsTINY TABLES · REAL PYTHON · YOUR PACE
Types, dates & missingness · W15 · 8 MIN

Work with dates

Extract useful calendar features from parsed dates.

Exercises within this concept

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

Understand the idea

The .dt accessor extracts calendar information from a datetime Series. Parse text first; missing dates yield missing calendar values.

Concept sketch: extract calendar fields from datesdate2026-06-012026-07-03yearmonthday20266Mon20267Friextract calendar fields from dates
Illustration · not the exercise output

A small example

For 2026-08-04: year is 2026, month is 8 and day_name() is "Tuesday".

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")
df["year"] = df["date"].dt.year
df["month"] = df["date"].dt.month
df["weekday"] = df["date"].dt.day_name()
df

What each part does

df["date"].dt.year
calendar year
.dt.month
month number
.dt.day_name()
weekday name

Your inputs

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

Messy café orders · 8 synthetic rows
orderdrinksizepricetipdate
101" latte "LARGE6.2012026-06-01
102TEAsmall3.100.52026-06-02
103" mocha "LARGEoopsNonenot a date
104LatteSmallNone0.82026-06-04
104LatteSmallNone0.82026-06-04
105"tea "SMALL4.200.62026-06-05
106ESPRESSOsmall2.500.22026-06-06
107" mocha"large6.801.52026-06-07

Your task · Follow

  1. Using df, parse date, then add year, month and weekday columns.
  2. Retain invalid dates as missing.
  3. Keep the changes in df and display it.
  4. Use: to_datetime().
Hint

Parse dates before using .dt; year and month have no parentheses, but day_name does.

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["year"] = df["date"].dt.year
df["month"] = df["date"].dt.month
df["weekday"] = df["date"].dt.day_name()
df
Your task · Follow
  1. Using df, parse date, then add year, month and weekday columns.
  2. Retain invalid dates as missing.
  3. Keep the changes in df and display it.
  4. Use: to_datetime().

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.