Python Pandas - Create a CustomBusinessDay Offset object

The CustomBusinessDay offset in Pandas allows you to create custom business day schedules by specifying which days of the week are valid business days. This is useful when you need to exclude specific weekdays or create non-standard business calendars.

Syntax

pd.tseries.offsets.CustomBusinessDay(n=1, weekmask='Mon Tue Wed Thu Fri', holidays=None)

Parameters

The main parameters for CustomBusinessDay are:

  • n ? Number of business days to offset (default: 1)
  • weekmask ? String specifying valid business days (default: 'Mon Tue Wed Thu Fri')
  • holidays ? List of dates to exclude as holidays (default: None)

Creating a Basic CustomBusinessDay Offset

First, let's create a simple CustomBusinessDay offset with a custom weekmask ?

import pandas as pd

# Create a timestamp
timestamp = pd.Timestamp('2021-12-31 08:35:10')
print("Original Timestamp:")
print(timestamp)

# Create CustomBusinessDay offset excluding Thursday
cbdOffset = pd.tseries.offsets.CustomBusinessDay(n=5, weekmask='Mon Tue Wed Fri')
print("\nCustomBusinessDay Offset:")
print(cbdOffset)

# Add the offset to get the result
result = timestamp + cbdOffset
print("\nUpdated Timestamp:")
print(result)
Original Timestamp:
2021-12-31 08:35:10

CustomBusinessDay Offset:
<5 * CustomBusinessDays>

Updated Timestamp:
2022-01-10 08:35:10

Using CustomBusinessDay with Holidays

You can also exclude specific dates as holidays ?

import pandas as pd

# Create a timestamp
timestamp = pd.Timestamp('2022-01-01')
print("Original Date:")
print(timestamp.date())

# Define holidays to exclude
holidays = ['2022-01-03', '2022-01-07']

# Create CustomBusinessDay offset with holidays
cbdOffset = pd.tseries.offsets.CustomBusinessDay(
    n=3, 
    weekmask='Mon Tue Wed Thu Fri', 
    holidays=holidays
)

result = timestamp + cbdOffset
print("\nAfter adding 3 custom business days (excluding holidays):")
print(result.date())
Original Date:
2022-01-01

After adding 3 custom business days (excluding holidays):
2022-01-06

Creating Different Weekmask Patterns

CustomBusinessDay allows various weekmask configurations ?

import pandas as pd

timestamp = pd.Timestamp('2022-01-01')

# Different weekmask examples
patterns = [
    ('Mon Tue Wed Thu Fri', 'Standard 5-day week'),
    ('Mon Tue Wed Fri', '4-day week (no Thursday)'),
    ('Tue Wed Thu Fri Sat', 'Tuesday to Saturday'),
    ('Mon Wed Fri', 'Alternate weekdays only')
]

print("Original date:", timestamp.date())
print("\nAdding 2 business days with different patterns:")

for weekmask, description in patterns:
    offset = pd.tseries.offsets.CustomBusinessDay(n=2, weekmask=weekmask)
    result = timestamp + offset
    print(f"{description}: {result.date()}")
Original date: 2022-01-01

Adding 2 business days with different patterns:
Standard 5-day week (no Thursday): 2022-01-04
4-day week (no Thursday): 2022-01-05
Tuesday to Saturday: 2022-01-05
Alternate weekdays only: 2022-01-07

Common Use Cases

Scenario Weekmask Use Case
Standard Business 'Mon Tue Wed Thu Fri' Regular business operations
4-Day Work Week 'Mon Tue Wed Fri' Companies with 4-day schedules
Middle East Business 'Sun Mon Tue Wed Thu' Sunday-Thursday work week
Retail Schedule 'Tue Wed Thu Fri Sat Sun' Retail with Monday closures

Conclusion

CustomBusinessDay offset provides flexible business day calculations by allowing custom weekmasks and holiday exclusions. Use it when standard business day calculations don't match your specific business calendar requirements.

Updated on: 2026-03-26T18:10:00+05:30

501 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements