import pandas as pd
my_dict={'NAME':['Ravi','Raju','Alex'],
'dt_start':['31/1/2020','29/2/2020','28/2/2019']
}
df = pd.DataFrame(data=my_dict)
df['dt_start'] = pd.to_datetime(df['dt_start'])
print(df)
We created one date timedelta64 column by using to_datetime(). Here is the output
NAME dt_start
0 Ravi 2020-01-31
1 Raju 2020-02-29
2 Alex 2019-02-28
We can add ( or subtract ) dates from above values by using keywords years, months, weeks, days, hours, minutes, seconds, microseconds, nanoseconds
df['dt_end']=df['dt_start']+pd.DateOffset(days=365)
print(df)
Output ( one new column dt_end is added )
NAME dt_start dt_end
0 Ravi 2020-01-31 2021-01-30
1 Raju 2020-02-29 2021-02-28
2 Alex 2019-02-28 2020-02-28
Subtracting days
df['dt_end']=df['dt_start']-pd.DateOffset(days=365)
df['dt_end']=df['dt_start']+pd.DateOffset(years=2)
df['dt_end']=df['dt_start']+pd.DateOffset(months=3)
df['dt_end']=df['dt_start']+\
pd.DateOffset(years=2,months=3,days=13)
df['dt_end']=df['dt_start']+pd.DateOffset(hours=2)
df['dt_end']=df['dt_start']+\
pd.DateOffset(hours=2,minutes=50,seconds=43)
Output is here
NAME dt_start dt_end
0 Ravi 2020-01-31 2020-01-31 02:50:43
1 Raju 2020-02-29 2020-02-29 02:50:43
2 Alex 2019-02-28 2019-02-28 02:50:43
Similarly we can add microseconds and nanoseconds
year month day weekday
hour minute second microsecond nanosecond
We are updating the year part only ( not adding or subtracting )
df['dt_end']=df['dt_start']-pd.DateOffset(year=2023)
PerformanceWarning: Non-vectorized DateOffset being applied to Series or DatetimeIndex
PerformanceWarning,
In above case better to use timedelta64. Check the sample code below.
day=15
, we are replacing the day part. In second case days=15
we are subtracting 15 days.
import pandas as pd
dt='2021-02-25'
print(pd.Timestamp(dt)-pd.DateOffset(day=15)) # 2021-02-15 00:00:00
print(pd.Timestamp(dt)-pd.DateOffset(days=15))# 2021-02-10 00:00:00
tm=pd.Timestamp(year=2020,month=12,day=23,hour=18,minute=20,second=5)
print(tm+pd.offsets.DateOffset(months=2))
Output
2021-02-23 18:20:05
Adding Dateoffset to current date and time.
tm=pd.Timestamp('now') # current timestamp
x=pd.offsets.DateOffset(years=1,months=2,days=3,\
hours=4,minutes=40,seconds=20)
print(tm+x)
Output
2022-08-07 14:48:00.151036
Using timedelta64 we can add or subtact date parts.
import pandas as pd
import numpy as np
tm=pd.Timestamp('now') # current timestamp
y=np.timedelta64(1,'M') # adding one month
z=np.timedelta64(1,'Y') # adding one year
print(tm+y+z)
Output
2022-07-05 02:35:38.978611
Author
🎥 Join me live on YouTubePassionate about coding and teaching, I publish practical tutorials on PHP, Python, JavaScript, SQL, and web development. My goal is to make learning simple, engaging, and project‑oriented with real examples and source code.