Pandas客户工作日偏移的性能

vkc1a9a2  于 2023-01-04  发布在  其他
关注(0)|答案(1)|浏览(87)

对于一吨的日期,我需要计算下一个工作日,在那里我考虑假期。
目前,我使用的代码如下所示:

import pandas as pd
from pandas.tseries.holiday import USFederalHolidayCalendar

cal = USFederalHolidayCalendar()
bday_offset = lambda n: pd.datetools.offsets.CustomBusinessDay(n, calendar=cal)

mydate = pd.to_datetime("12/24/2014")
%timeit with_holiday = mydate + bday_offset(1)
%timeit without_holiday = mydate + pd.datetools.offsets.BDay(1)

在我的计算机上,with_holiday行运行时间约为12毫秒;而without_holiday行运行大约15微秒。
有什么方法可以使bday_offset函数更快吗?

0x6upsns

0x6upsns1#

我认为你通过lambda实现它的方式会减慢它的速度。考虑一下这个方法(或多或少直接取自文档)

from pandas.tseries.offsets import CustomBusinessDay
bday_us = CustomBusinessDay(calendar=USFederalHolidayCalendar())
mydate + bday_us

Out[13]: Timestamp('2014-12-26 00:00:00')

第一部分很慢,但你只需要做一次。第二部分虽然很快。

%timeit bday_us = CustomBusinessDay(calendar=USFederalHolidayCalendar())
10 loops, best of 3: 66.5 ms per loop

%timeit mydate + bday_us
10000 loops, best of 3: 44 µs per loop

为了让苹果对苹果,这里是我的机器上的其他计时:

%timeit with_holiday = mydate + bday_offset(1)
10 loops, best of 3: 23.1 ms per loop

%timeit without_holiday = mydate + pd.datetools.offsets.BDay(1)
10000 loops, best of 3: 36.6 µs per loop

相关问题