To roll provided date forward to next offset only if not on offset, use the CustomBusinessHour.rollforward() method in Pandas.
At first, import the required libraries −
import pandas as pd
Set the timestamp object in Pandas −
timestamp = pd.Timestamp('2021-12-20 08:35:10')
Create the CustomBusinessHour Offset. CustomBusinessHour is the DateOffset subclass. Weekmask of valid business days −
cbhOffset = pd.tseries.offsets.CustomBusinessHour(n = 5, weekmask = 'Mon Tue Wed Fri')
Add the offset to the Timestamp and display the Updated Timestamp −
print("\nUpdated Timestamp...\n",timestamp + cbhOffset)
Roll forward if not on offset −
roll = cbhOffset.rollforward(pd.Timestamp('2021-12-30 08:35:10'))Display the result −
print("\nRoll forward Result...\n",roll)
Example
Following is the code −
import pandas as pd
# Set the timestamp object in Pandas
timestamp = pd.Timestamp('2021-12-20 08:35:10')
# Display the Timestamp
print("Timestamp...\n",timestamp)
# Create the CustomBusinessHour Offset
# CustomBusinessHour is the DateOffset subclass
# Weekmask of valid business days
cbhOffset = pd.tseries.offsets.CustomBusinessHour(n = 5, weekmask = 'Mon Tue Wed Fri')
# Display the CustomBusinessHour Offset
print("\nCustomBusinessHour Offset...\n",cbhOffset)
# Add the offset to the Timestamp and display the Updated Timestamp
print("\nUpdated Timestamp...\n",timestamp + cbhOffset)
# roll forward if not on offset
roll = cbhOffset.rollforward(pd.Timestamp('2021-12-30 08:35:10'))
# display the result
print("\nRoll forward Result...\n",roll)Output
This will produce the following code −
Timestamp... 2021-12-20 08:35:10 CustomBusinessHour Offset... <5 * CustomBusinessHours: CBH=09:00-17:00> Updated Timestamp... 2021-12-20 14:00:00 Roll forward Result... 2021-12-31 09:00:00