2016-11-22 18 views
1

我有一個四圍解決方案,使每個月的最後一個星期四,可重複的代碼如下:得到每個月的特定的最後一天,熊貓/ 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().values.astype('datetime64[D]') 

但是,我想這是有些不必爲了獲得最後一個星期四而產生一系列值並運行groupby。我試過

dt_range = pd.Series(pd.date_range(start, end, freq='4W-THU')) 

但是這可能導致在第五週的週四中選擇第二個星期四。

我怎樣才能更有效地完成這一點,最好是在date_range函數本身?

+0

我認爲您的解決方案是偉大的,你總是可以只合並兩條線步驟圍繞存儲內存中的較大列表。 – AlexG

回答

2

您可以使用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 
+0

棒極了。我知道pd.offsets,但不知道,我可以在這裏使用'freq'。謝謝 –