gpt4 book ai didi

python - 如何使用 Pandas CDay 查找日期之间的工作日?

转载 作者:太空宇宙 更新时间:2023-11-04 02:54:43 25 4
gpt4 key购买 nike

我定义了一个存储假期的 Pandas CDay() 对象。我如何使用它来计算两个日期之间的工作日数?

我知道 np.busday_count,但我的日历恰好是 Pandas CDay

最佳答案

您可以简单地将周掩码和假期从CDay 日历直接传递给np.busday_count。 .

np.busday_count(start_date, end_date,
weekmask=bday_custom.weekmask, holidays=bday_custom.holidays)

或者(但肯定更慢),您可以使用 pd.date_range ,并将您的自定义 CDay 日历作为 freq 传递。

pd.date_range(datetime(2017, 3, 5), datetime(2017, 3, 12), freq=bday_cust).size

这有一个不幸的副作用,即创建一个仅使用其大小的中间日期范围。


示例

让我们设置一个无意义的自定义工作日日历。

from pandas.tseries.offsets import CustomBusinessDay
weekmask = 'Mon Wed Fri Sat'
holidays = [datetime(2017, 3, 6), datetime(2017, 3, 11)]

bday_cust = CustomBusinessDay(holidays=holidays, weekmask=weekmask)

现在,我们已将 3 月 5 日至 11 日这一周的星期一和星期六设置为工作日(和节假日)。现在查看该特定日期范围,我们可以计算剩余工作日 (2)

>>> np.busday_count(datetime(2017, 3, 5), datetime(2017, 3, 12),
weekmask=bday_custom.weekmask,
holidays=bday_custom.holidays)
2
>>> pd.date_range(datetime(2017, 3, 5), datetime(2017, 3, 12), freq=bday_cust).size
2

粗略的示例基准

%timeit np.busday_count(datetime(2017, 3, 5), datetime(2017, 3, 12),
weekmask=bday_custom.weekmask,
holidays=bday_custom.holidays)
100000 loops, best of 3: <b>17.2 us per loop</b>

% timeit pd.date_range(datetime(2017, 3, 5), datetime(2017, 3, 12), freq=bday_cust).size
1000 loops, best of 3: <b>573 us per loop</b>

关于python - 如何使用 Pandas CDay 查找日期之间的工作日?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42789645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com