我有一个解决方案来获取每个月的最后一个星期四,可重现的代码如下:
import pandas as pd
start = pd.Timestamp('2016-07-27 00:00:00')
end = pd.Timestamp('2016-11-18 00:00:00')
dt_range = pd.Series(pd.date_range(start, end, freq='W-THU'))
t = dt_range.groupby(dt_range.dt.month).last().values.astype('datetime64[D]')
但是,我认为有必要制作一系列值并在其上操作groupby以进入上周四。我试过了
dt_range = pd.Series(pd.date_range(start, end, freq='4W-THU'))
但这可能会导致上周四选择第二个星期四,而星期四则是第五周。
如何更有效地完成此任务,最好是在date_range函数本身?
答案 0 :(得分:3)
您可以使用pd.offsets.LastWeekOfMonth
来构建自定义频率:
last_thu = pd.offsets.LastWeekOfMonth(weekday=3)
dt_range = pd.Series(pd.date_range('2016-01-01', periods=12, freq=last_thu))
结果输出:
0 2016-01-28
1 2016-02-25
2 2016-03-31
3 2016-04-28
4 2016-05-26
5 2016-06-30
6 2016-07-28
7 2016-08-25
8 2016-09-29
9 2016-10-27
10 2016-11-24
11 2016-12-29