我有一个日期范围
pd.bdate_range("2001-01-01", "2018-01-01")
并希望找到该月的第三个工作日(暂时忽略假期)。我该怎么做?
答案 0 :(得分:1)
由于您已经处于营业日期,您可以重新采样到营业月的开头('BMS')并添加3个工作日的偏移量::
>>> pd.Series(index=pd.bdate_range("2001-01-01",
"2018-01-01")).resample('BMS').index + pd.datetools.BDay(3)
DatetimeIndex(['2001-01-04', '2001-02-06', '2001-03-06', '2001-04-05',
'2001-05-04', '2001-06-06', '2001-07-05', '2001-08-06',
'2001-09-06', '2001-10-04',
...
'2017-04-06', '2017-05-04', '2017-06-06', '2017-07-06',
'2017-08-04', '2017-09-06', '2017-10-05', '2017-11-06',
'2017-12-06', '2018-01-04'],
dtype='datetime64[ns]', length=205, freq=None)
您可以在documentation找到有关如何使用熊猫日期的更多详细信息。
答案 1 :(得分:0)
计划:groupby年,月。用nth()选择第三个。
这个例子在一系列文章中会更容易:
dates = pd.Series(pd.bdate_range("2001-01-01", "2018-01-01"))
dates.groupby((dates.dt.year, dates.dt.month)).nth(3)
部分输出:
2001 1 2001-01-04
2 2001-02-06
3 2001-03-06
4 2001-04-05
5 2001-05-04
6 2001-06-06
7 2001-07-05
8 2001-08-06
9 2001-09-06
10 2001-10-04
11 2001-11-06
12 2001-12-06
2002 1 2002-01-04
2 2002-02-06
3 2002-03-06
4 2002-04-04