Date arithmetic helps us add or subtract time from dates. It makes working with dates easy, like finding how many days between two dates or adding days to a date.
Date arithmetic (Timedelta) in Data Analysis Python
from datetime import datetime, timedelta # Create a timedelta object delta = timedelta(days=5, hours=3) # Add timedelta to a date new_date = datetime.now() + delta # Subtract timedelta from a date old_date = datetime.now() - delta
timedelta represents a duration, like days, seconds, or hours.
You can add or subtract timedelta objects to datetime objects to get new dates.
from datetime import datetime, timedelta # Add 10 days to current date today = datetime.now() future = today + timedelta(days=10) print(future)
from datetime import datetime, timedelta # Find difference between two dates d1 = datetime(2024, 6, 1) d2 = datetime(2024, 6, 10) diff = d2 - d1 print(diff.days)
from datetime import datetime, timedelta # Subtract 2 hours from current time now = datetime.now() past = now - timedelta(hours=2) print(past)
This program shows how to add and subtract time from the current date and how to find the number of days between two fixed dates.
from datetime import datetime, timedelta # Current date and time now = datetime.now() print(f"Now: {now}") # Create a timedelta of 7 days and 5 hours delta = timedelta(days=7, hours=5) # Add timedelta to current date future_date = now + delta print(f"Future date (7 days, 5 hours later): {future_date}") # Subtract timedelta from current date past_date = now - delta print(f"Past date (7 days, 5 hours earlier): {past_date}") # Calculate difference between two dates start_date = datetime(2024, 6, 1) end_date = datetime(2024, 6, 15) difference = end_date - start_date print(f"Days between {start_date.date()} and {end_date.date()}: {difference.days}")
When printing datetime objects, the exact time will depend on when the code runs.
You can specify days, seconds, microseconds, milliseconds, minutes, hours, and weeks in timedelta.
Subtracting two datetime objects gives a timedelta representing the difference.
Date arithmetic uses timedelta to add or subtract time from dates.
You can find differences between dates or shift dates forward or backward easily.
This is useful for scheduling, deadlines, and measuring time intervals.
Practice
timedelta object represent in Python's date arithmetic?Solution
Step 1: Understand the purpose of timedelta
Thetimedeltaobject is used to represent a span of time, such as days, seconds, or microseconds.Step 2: Differentiate timedelta from other date/time objects
Unlike a specific date or time,timedeltameasures the difference or duration between two dates or times.Final Answer:
A duration or difference between two dates or times -> Option DQuick Check:
timedelta = duration/difference [OK]
- Confusing timedelta with a specific date
- Thinking timedelta formats dates
- Assuming timedelta converts strings
Solution
Step 1: Recall timedelta constructor syntax
Thetimedeltaconstructor accepts keyword arguments likedays,seconds, etc.Step 2: Identify the correct keyword and format
timedelta(5 days): syntax error ('days' undefined). timedelta(seconds=5): 5 seconds not days. timedelta(day=5): invalid keyword 'day'. timedelta(days=5): correctdays=5.Final Answer:
timedelta(days=5) -> Option CQuick Check:
Use keyword days=5 for 5 days [OK]
- Using 'days' without quotes causing NameError
- Using seconds=5 instead of days=5
- Misspelling 'days' as 'day'
from datetime import datetime, timedelta
start = datetime(2024, 6, 10)
new_date = start + timedelta(days=7)
print(new_date.strftime('%Y-%m-%d'))Solution
Step 1: Understand the initial date
The variablestartis June 10, 2024.Step 2: Add 7 days using timedelta
Adding 7 days to June 10 results in June 17, 2024.Step 3: Format the date output
Thestrftimeformats the date as 'YYYY-MM-DD', so output is '2024-06-17'.Final Answer:
2024-06-17 -> Option AQuick Check:
June 10 + 7 days = June 17 [OK]
- Subtracting days instead of adding
- Misreading date format
- Confusing month and day positions
from datetime import datetime, timedelta start = datetime(2024, 6, 10) new_date = start + timedelta(day=7) print(new_date)
Solution
Step 1: Check timedelta constructor usage
Thetimedeltaconstructor requires keyword arguments likedays=7;day=7is invalid keyword causing TypeError.Step 2: Verify other parts of code
Adding timedelta to datetime is valid, print syntax is correct, and time parameters are optional.Final Answer:
timedelta uses invalid keyword 'day' -> Option AQuick Check:
timedelta(days=7) needed, not day=7 [OK]
- Misspelling 'days' as 'day'
- Thinking datetime + timedelta is invalid
- Assuming print syntax error
'start_date' of type datetime. You want to create a new column 'deadline' that is 10 days after 'start_date'. Which code correctly does this using pandas and timedelta?import pandas as pd
from datetime import timedelta
df = pd.DataFrame({'start_date': pd.to_datetime(['2024-06-01', '2024-06-05'])})
# Which line correctly adds 10 days?Solution
Step 1: Understand pandas datetime addition
When adding time to pandas datetime columns, usepd.Timedeltafor vectorized operations.Step 2: Check each option
df['deadline'] = df['start_date'] + pd.Timedelta(days=10): correctpd.Timedelta(days=10). df['deadline'] = df['start_date'] + timedelta(seconds=10):timedelta(seconds=10)adds seconds not days. df['deadline'] = df['start_date'] + timedelta(day=10): invalid keywordday=10. df['deadline'] = df['start_date'] + pd.timedelta(days=10):pd.timedeltadoesn't exist.Final Answer:
df['deadline'] = df['start_date'] + pd.Timedelta(days=10) -> Option BQuick Check:
Use pd.Timedelta for pandas datetime addition [OK]
- Using seconds=10 instead of days=10
- Using invalid keyword 'day=10'
- Wrong capitalization pd.timedelta
Ready to prove it?
Pass the test and this pattern moves unknown
