我正在使用熊猫,我想知道使用熊猫在开始日期和结束日期之间的最简单方法是什么?
关于在Python中执行此操作有很多帖子(例如),但我有兴趣直接使用pandas,因为我认为pandas可能很容易处理这个问题.
这与这里的问题非常相似,但我想知道大熊猫是否有一种干净的方式让工作日意识到TimedeltaIndex?最终,我试图获取DatetimeIndex和Timestamp之间的工作日数(没有假日日历).根据引用的问题,这样的事情是有效的
import pandas as pd
import numpy as np
drg = pd.date_range('2015-07-31', '2015-08-05', freq='B')
A = [d.date() for d in drg]
B = pd.Timestamp('2015-08-05', 'B').date()
np.busday_count(A, B)
Run Code Online (Sandbox Code Playgroud)
这使
array([3, 2, 1, 0], dtype=int64)
Run Code Online (Sandbox Code Playgroud)
但这似乎有点笨拙.如果我尝试类似的东西
drg - pd.Timestamp('2015-08-05', 'B')
Run Code Online (Sandbox Code Playgroud)
我得到了一个TimedeltaIndex,但工作日频率被取消了
TimedeltaIndex(['-5 days', '-2 days', '-1 days', '0 days'], dtype='timedelta64[ns]', freq=None)
Run Code Online (Sandbox Code Playgroud)
只是想知道是否有更优雅的方式来解决这个问题.
有没有更好/更直接的方法来计算这个比以下?
# 1. Set up the start and end date for which you want to calculate the
# number of business days excluding holidays.
start_date = '01JAN1986'
end_date = '31DEC1987'
start_date = datetime.datetime.strptime(start_date, '%d%b%Y')
end_date = datetime.datetime.strptime(end_date, '%d%b%Y')
# 2. Generate a list of holidays over this period
from pandas.tseries.holiday import USFederalHolidayCalendar
calendar = USFederalHolidayCalendar()
holidays = calendar.holidays(start_date, end_date)
holidays
Run Code Online (Sandbox Code Playgroud)
这给出了一个pandas.tseries.index.DatetimeIndex
DatetimeIndex(['1986-01-01', '1986-01-20', '1986-02-17', '1986-05-26',
'1986-07-04', '1986-09-01', '1986-10-13', '1986-11-11',
'1986-11-27', '1986-12-25', '1987-01-01', '1987-01-19',
'1987-02-16', '1987-05-25', '1987-07-03', '1987-09-07',
'1987-10-12', '1987-11-11', '1987-11-26', …Run Code Online (Sandbox Code Playgroud)