Bird
Raised Fist0
Pandasdata~10 mins

Date arithmetic with timedelta in Pandas - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Date arithmetic with timedelta
Start with a date
↓
Create timedelta (days, hours, etc.)
↓
Add or subtract timedelta from date
↓
Get new date result
↓
Use new date for analysis or display
We start with a date, create a time difference (timedelta), then add or subtract it to get a new date.
Execution Sample
Pandas
import pandas as pd
start_date = pd.Timestamp('2024-06-01')
delta = pd.Timedelta(days=5)
new_date = start_date + delta
print(new_date)
This code adds 5 days to June 1, 2024, and prints the new date.
Execution Table
StepVariableValueOperationResult
1start_date2024-06-01 00:00:00Assign date2024-06-01 00:00:00
2delta5 days 00:00:00Create timedelta5 days 00:00:00
3new_dateN/AAdd start_date + delta2024-06-06 00:00:00
4print(new_date)N/AOutput new_date2024-06-06 00:00:00
💡 Completed adding timedelta to start_date and printed the result.
Variable Tracker
VariableStartAfter Step 2After Step 3Final
start_dateN/A2024-06-01 00:00:002024-06-01 00:00:002024-06-01 00:00:00
deltaN/A5 days 00:00:005 days 00:00:005 days 00:00:00
new_dateN/AN/A2024-06-06 00:00:002024-06-06 00:00:00
Key Moments - 2 Insights
Why does adding timedelta to a date give a new date instead of a number?
Adding timedelta shifts the date by that time amount, producing a new date object, as shown in step 3 of the execution_table.
Can timedelta represent negative time to subtract days?
Yes, timedelta can be negative. Adding a negative timedelta subtracts days, similar to step 3 but with a negative value.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 3, what is the value of new_date?
A2024-06-01 00:00:00
B2024-06-06 00:00:00
C5 days 00:00:00
DN/A
💡 Hint
Check the 'Result' column for step 3 in the execution_table.
If delta was pd.Timedelta(days=-3), what would new_date be after step 3?
A2024-05-29 00:00:00
B2024-06-04 00:00:00
C2024-06-01 00:00:00
D2024-06-08 00:00:00
💡 Hint
Subtracting 3 days from June 1, 2024 moves the date back to May 29, 2024.
According to variable_tracker, what is the value of delta after step 2?
AN/A
B2024-06-01 00:00:00
C5 days 00:00:00
D2024-06-06 00:00:00
💡 Hint
Look at the 'After Step 2' column for delta in variable_tracker.
Concept Snapshot
Date arithmetic with timedelta in pandas:
- Use pd.Timestamp for dates
- Use pd.Timedelta for time differences
- Add or subtract timedelta to dates
- Result is a new date shifted by timedelta
- Supports days, hours, minutes, seconds
Full Transcript
This visual execution shows how to add a time difference to a date using pandas. We start with a date called start_date set to June 1, 2024. Then we create a timedelta of 5 days. Adding this timedelta to start_date gives a new date, June 6, 2024. The execution table traces each step, showing variable values and operations. The variable tracker shows how start_date, delta, and new_date change over time. Key moments clarify why adding timedelta results in a new date and that timedelta can be negative to subtract days. The quiz tests understanding of these steps and values. This helps beginners see exactly how date arithmetic works in pandas.

Practice

(1/5)
1. What does pd.Timedelta(days=3) represent in pandas?
easy
A. A string describing 3 days
B. A specific date 3 days from now
C. A time difference of 3 days
D. A timestamp at 3 AM

Solution

  1. Step 1: Understand Timedelta purpose

    pd.Timedelta is used to represent a duration or difference in time, not a fixed date or time.
  2. Step 2: Interpret the argument

    The argument days=3 means the duration is 3 days long.
  3. Final Answer:

    A time difference of 3 days -> Option C
  4. Quick Check:

    Timedelta(days=3) = 3 days [OK]
Hint: Timedelta means duration, not a fixed date [OK]
Common Mistakes:
  • Thinking Timedelta is a fixed date
  • Confusing Timedelta with Timestamp
  • Assuming it returns a string
2. Which of the following is the correct way to add 5 days to a pandas Timestamp ts?
easy
A. ts.add(pd.Timedelta(5))
B. ts + pd.Timedelta('5')
C. ts + pd.Timedelta(5 days)
D. ts + pd.Timedelta(days=5)

Solution

  1. Step 1: Check correct Timedelta syntax

    The correct way to specify 5 days is pd.Timedelta(days=5). The argument must be named or a valid string.
  2. Step 2: Verify addition syntax

    Adding a Timedelta to a Timestamp uses the + operator, so ts + pd.Timedelta(days=5) is correct.
  3. Final Answer:

    ts + pd.Timedelta(days=5) -> Option D
  4. Quick Check:

    Correct syntax uses days=5 inside Timedelta [OK]
Hint: Use named argument days=5 inside Timedelta [OK]
Common Mistakes:
  • Missing quotes or wrong argument format
  • Using add() method incorrectly
  • Passing string without units
3. What is the output of this code?
import pandas as pd
start = pd.Timestamp('2024-01-01')
new_date = start + pd.Timedelta(days=10) - pd.Timedelta(days=3)
print(new_date.strftime('%Y-%m-%d'))
medium
A. 2024-01-08
B. 2024-01-13
C. 2024-01-04
D. 2024-01-10

Solution

  1. Step 1: Calculate addition of 10 days

    Starting from 2024-01-01, adding 10 days gives 2024-01-11.
  2. Step 2: Subtract 3 days from the result

    Subtracting 3 days from 2024-01-11 results in 2024-01-08.
  3. Final Answer:

    2024-01-08 -> Option A
  4. Quick Check:

    2024-01-01 + 10 - 3 days = 2024-01-08 [OK]
Hint: Add then subtract days stepwise to find final date [OK]
Common Mistakes:
  • Adding and subtracting days in wrong order
  • Miscounting days
  • Confusing string formatting output
4. The following code throws an error. What is the problem?
import pandas as pd
start = pd.Timestamp('2024-05-01')
new_date = start + pd.Timedelta(5)
print(new_date)
medium
A. Timedelta needs a unit like days=5
B. Timestamp cannot be added to Timedelta
C. pd.Timedelta requires string input only
D. Missing import for Timedelta

Solution

  1. Step 1: Check Timedelta argument

    pd.Timedelta(5) is missing the unit. It needs a keyword like days=5 or a string like '5 days'.
  2. Step 2: Understand error cause

    Without specifying units, pandas cannot interpret the number 5 alone, causing an error.
  3. Final Answer:

    Timedelta needs a unit like days=5 -> Option A
  4. Quick Check:

    Timedelta(5) missing units causes error [OK]
Hint: Always specify units when creating Timedelta [OK]
Common Mistakes:
  • Passing integer without units
  • Assuming default unit is days
  • Confusing Timestamp and Timedelta usage
5. You have a pandas DataFrame df with a column 'date' of type datetime. You want to create a new column 'date_plus_7' that adds 7 days to each date. Which code correctly does this?
hard
A. df['date_plus_7'] = df['date'] + pd.Timedelta('7 days')
B. df['date_plus_7'] = df['date'] + pd.Timedelta(days=7)
C. df['date_plus_7'] = df['date'] + pd.Timedelta(7)
D. df['date_plus_7'] = df['date'] + pd.Timedelta(days=7) * len(df)

Solution

  1. Step 1: Understand Timedelta broadcasting

    Adding a Timedelta to a pandas Series of dates works if the Timedelta is a scalar (single duration).
  2. Step 2: Check each option

    df['date_plus_7'] = df['date'] + pd.Timedelta('7 days') uses a string '7 days' which works but is less common in vectorized operations. df['date_plus_7'] = df['date'] + pd.Timedelta(days=7) uses pd.Timedelta(days=7) which is the standard and recommended way. df['date_plus_7'] = df['date'] + pd.Timedelta(7) misses units and causes error. df['date_plus_7'] = df['date'] + pd.Timedelta(days=7) * len(df) multiplies timedelta by length, which incorrectly scales the timedelta.
  3. Step 3: Choose the best practice

    df['date_plus_7'] = df['date'] + pd.Timedelta(days=7) is the correct and recommended way to add 7 days to each date in a column.
  4. Final Answer:

    df['date_plus_7'] = df['date'] + pd.Timedelta(days=7) -> Option B
  5. Quick Check:

    Use pd.Timedelta(days=7) for vectorized addition with Series [OK]
Hint: Use pd.Timedelta(days=7) for vectorized addition with Series [OK]
Common Mistakes:
  • Passing integer without units
  • Multiplying Timedelta by length of DataFrame
  • Not using vectorized Timedelta correctly
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