Bird
Raised Fist0
Pandasdata~10 mins

Extracting year, month, day in Pandas - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Extracting year, month, day
Start with datetime column
↓
Use .dt accessor
↓
Extract year/month/day
↓
Create new columns with extracted values
↓
Use extracted data for analysis
We start with a datetime column, use pandas .dt accessor to get year, month, and day, then store these in new columns for easy use.
Execution Sample
Pandas
import pandas as pd

df = pd.DataFrame({'date': pd.to_datetime(['2023-01-15', '2024-06-20'])})
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
df['day'] = df['date'].dt.day
print(df)
This code creates a DataFrame with dates and extracts year, month, and day into new columns.
Execution Table
StepActionCodeResult
1Create DataFrame with date columndf = pd.DataFrame({'date': pd.to_datetime(['2023-01-15', '2024-06-20'])})df with 'date' column: [2023-01-15, 2024-06-20]
2Extract year from 'date'df['year'] = df['date'].dt.yearyear column: [2023, 2024]
3Extract month from 'date'df['month'] = df['date'].dt.monthmonth column: [1, 6]
4Extract day from 'date'df['day'] = df['date'].dt.dayday column: [15, 20]
5Print final DataFrameprint(df)DataFrame: date year month day 0 2023-01-15 2023 1 15 1 2024-06-20 2024 6 20
💡 All date parts extracted and stored; execution ends after printing DataFrame.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4Final
dfemptydate column with 2 datesyear column addedmonth column addedday column addedfinal DataFrame with date, year, month, day columns
Key Moments - 2 Insights
Why do we use .dt before year, month, or day?
The .dt accessor tells pandas we want to work with datetime properties of the column. Without .dt, pandas won't know to extract parts like year or month. See execution_table step 2.
Can we extract year, month, day directly without converting to datetime?
No, the column must be datetime type. pd.to_datetime converts strings to datetime. Without this, .dt.year etc. will cause errors. See execution_table step 1.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of 'month' after step 3?
A[1, 6]
B[15, 20]
C[2023, 2024]
D['2023-01-15', '2024-06-20']
💡 Hint
Check the 'Result' column for step 3 in the execution_table.
At which step is the 'day' column added to the DataFrame?
AStep 2
BStep 3
CStep 4
DStep 5
💡 Hint
Look for the action mentioning 'Extract day' in the execution_table.
If the 'date' column was not converted to datetime, what would happen when running step 2?
AIt would extract year correctly
BIt would raise an error
CIt would extract month instead
DIt would create empty columns
💡 Hint
Refer to key_moments about the need for datetime type before using .dt accessor.
Concept Snapshot
Extract year, month, day from datetime column in pandas:
- Ensure column is datetime type (use pd.to_datetime)
- Use .dt.year, .dt.month, .dt.day to get parts
- Assign to new columns for easy access
- Useful for time-based analysis and filtering
Full Transcript
We start with a pandas DataFrame containing a date column. First, we convert the date strings to datetime type using pd.to_datetime. Then, using the .dt accessor, we extract the year, month, and day parts from the datetime column. Each extracted part is stored in a new column in the DataFrame. Finally, we print the DataFrame showing the original date and the extracted year, month, and day columns. This process helps us work easily with parts of dates for analysis.

Practice

(1/5)
1. What does the .dt.year attribute do when applied to a pandas datetime column?
easy
A. Extracts the year part from each date in the column
B. Extracts the month part from each date in the column
C. Extracts the day part from each date in the column
D. Converts the column to string format

Solution

  1. Step 1: Understand pandas datetime attributes

    The .dt accessor allows extraction of date parts like year, month, and day from datetime columns.
  2. Step 2: Identify the function of .dt.year

    The .dt.year extracts the year component from each datetime value in the column.
  3. Final Answer:

    Extracts the year part from each date in the column -> Option A
  4. Quick Check:

    .dt.year = year extraction [OK]
Hint: Remember: year, month, day are .dt.year, .dt.month, .dt.day [OK]
Common Mistakes:
  • Confusing .dt.year with .dt.month or .dt.day
  • Trying to use .year directly without .dt
  • Not converting column to datetime before extraction
2. Which of the following is the correct syntax to extract the month from a pandas datetime column named date_col?
easy
A. date_col.dt.month
B. date_col.month
C. date_col['month']
D. date_col.get_month()

Solution

  1. Step 1: Recall pandas datetime accessor usage

    To extract parts like month, you must use the .dt accessor on a datetime column.
  2. Step 2: Identify correct syntax for month extraction

    The correct syntax is date_col.dt.month. Other options either miss .dt or use invalid methods.
  3. Final Answer:

    date_col.dt.month -> Option A
  4. Quick Check:

    Use .dt before date parts [OK]
Hint: Always use .dt before year/month/day on datetime columns [OK]
Common Mistakes:
  • Using .month directly without .dt
  • Trying to access month as a dictionary key
  • Using non-existent methods like get_month()
3. Given the following code, what will be the output?
import pandas as pd
df = pd.DataFrame({
  'date': pd.to_datetime(['2023-01-15', '2022-12-31', '2024-07-04'])
})
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
df['day'] = df['date'].dt.day
df[['year', 'month', 'day']].values.tolist()
medium
A. [[15, 1, 2023], [31, 12, 2022], [4, 7, 2024]]
B. [['2023', '01', '15'], ['2022', '12', '31'], ['2024', '07', '04']]
C. [[2023, 1, 15], [2022, 12, 31], [2024, 7, 4]]
D. Error: Cannot extract year, month, day without conversion

Solution

  1. Step 1: Convert strings to datetime

    The pd.to_datetime converts string dates to datetime objects correctly.
  2. Step 2: Extract year, month, day

    Using .dt.year, .dt.month, and .dt.day extracts integer parts of the date.
  3. Final Answer:

    [[2023, 1, 15], [2022, 12, 31], [2024, 7, 4]] -> Option C
  4. Quick Check:

    Extracted parts are integers, not strings [OK]
Hint: Extracted year/month/day are integers, not strings [OK]
Common Mistakes:
  • Expecting strings instead of integers
  • Mixing order of day, month, year
  • Forgetting to convert to datetime first
4. What is wrong with this code snippet?
df['year'] = df['date'].year
Assuming df['date'] is a datetime column.
medium
A. You need to use df.year() instead
B. The column must be converted to string first
C. The code will work fine as is
D. It should be df['date'].dt.year to access year

Solution

  1. Step 1: Understand pandas datetime access

    Datetime columns require the .dt accessor to extract parts like year.
  2. Step 2: Identify missing .dt accessor

    The code misses .dt, so df['date'].year will raise an error or not work as expected.
  3. Final Answer:

    It should be df['date'].dt.year to access year -> Option D
  4. Quick Check:

    Use .dt before year/month/day [OK]
Hint: Always use .dt before year/month/day on datetime columns [OK]
Common Mistakes:
  • Omitting .dt accessor
  • Trying to call year() as a method
  • Converting datetime to string unnecessarily
5. You have a DataFrame df with a column 'timestamp' containing mixed string dates and some missing values (NaN). You want to create three new columns: 'year', 'month', and 'day'. Which approach correctly handles conversion and extraction without errors?
hard
A. df['year'] = df['timestamp'].dt.year; df['month'] = df['timestamp'].dt.month; df['day'] = df['timestamp'].dt.day
B. df['timestamp'] = pd.to_datetime(df['timestamp'], errors='coerce'); df['year'] = df['timestamp'].dt.year; df['month'] = df['timestamp'].dt.month; df['day'] = df['timestamp'].dt.day
C. df['year'] = df['timestamp'].str[:4]; df['month'] = df['timestamp'].str[5:7]; df['day'] = df['timestamp'].str[8:10]
D. df['timestamp'] = df['timestamp'].astype(str); df['year'] = df['timestamp'].dt.year

Solution

  1. Step 1: Convert mixed strings and NaN to datetime safely

    Using pd.to_datetime(..., errors='coerce') converts valid strings to datetime and invalid/missing to NaT without error.
  2. Step 2: Extract year, month, day using .dt accessor

    After conversion, use .dt.year, .dt.month, and .dt.day to get parts safely, even with NaT values.
  3. Final Answer:

    df['timestamp'] = pd.to_datetime(df['timestamp'], errors='coerce'); df['year'] = df['timestamp'].dt.year; df['month'] = df['timestamp'].dt.month; df['day'] = df['timestamp'].dt.day -> Option B
  4. Quick Check:

    Convert with errors='coerce' then extract parts [OK]
Hint: Use pd.to_datetime with errors='coerce' before extracting [OK]
Common Mistakes:
  • Not converting strings to datetime first
  • Extracting parts from string columns directly
  • Ignoring missing values causing errors
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard