我需要将pd.Timedelta偏移量应用于索引,但我想仅考虑工作日。不幸的是,这是不可能的,因为pd.Timedelta目前不支持工作日。
输入:
>>> d = pd.date_range(start='2015-1-10', end='2015-1-22', freq='B')
DatetimeIndex(['2015-01-12', '2015-01-13', '2015-01-14', '2015-01-15',
'2015-01-16', '2015-01-19', '2015-01-20', '2015-01-21',
'2015-01-22'],
dtype='datetime64[ns]', freq='B')
>>> td = pd.Timedelta('2D3h')
Timedelta('2 days 03:00:00')
预期产出:
DatetimeIndex(['2015-01-14 03:00:00', '2015-01-15 03:00:00',
'2015-01-16 03:00:00', '2015-01-19 03:00:00',
'2015-01-20 03:00:00', '2015-01-21 03:00:00',
'2015-01-22 03:00:00', '2015-01-23 03:00:00',
'2015-01-26 03:00:00'],
dtype='datetime64[ns]', freq='B')
答案 0 :(得分:0)
这是一个可能的解决方案:
def add_bday_timedelta(input, timedelta):
"""
Add timedelta to input taking into consideration business days
"""
days = timedelta.components.days
offset = timedelta - '%dD' % days
return input + BusinessDay(days) + offset
>>> add_bday_timedelta(d, td)
DatetimeIndex(['2015-01-14 03:00:00', '2015-01-15 03:00:00',
'2015-01-16 03:00:00', '2015-01-19 03:00:00',
'2015-01-20 03:00:00', '2015-01-21 03:00:00',
'2015-01-22 03:00:00', '2015-01-23 03:00:00',
'2015-01-26 03:00:00'],
dtype='datetime64[ns]', freq='B')