Datetime 在pandas/numpy中获取每个月的具体最后一天

Datetime 在pandas/numpy中获取每个月的具体最后一天,datetime,pandas,numpy,Datetime,Pandas,Numpy,我有一个大概的解决方案来获得每个月的最后一个星期四,可复制代码如下: 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()

我有一个大概的解决方案来获得每个月的最后一个星期四,可复制代码如下:

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'))
但这可能会导致选择几个月的第二个上周四,而第五周的第四个周四


如何更有效地完成此任务,最好是在日期范围函数本身

您可以使用
pd.offset.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

我认为你的解决方案很好,你可以把这两行结合起来,在内存中存储更大的列表。太棒了。我知道pd.offset,但不知道,我可以将其与“freq”一起使用。非常感谢。