熊猫:每月第三个工作日

时间:2018-02-15 14:49:20

标签: pandas date datetime

我有一个日期范围

pd.bdate_range("2001-01-01", "2018-01-01")

并希望找到该月的第三个工作日(暂时忽略假期)。我该怎么做?

2 个答案:

答案 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