2012-10-03 43 views
4

從三月份開始嘗試生成每個季度開始的第二個星期四的日期範圍時遇到了一個奇怪的問題。DateOffset:每月的一週

import pandas as pd 
import numpy as np 
from datetime import * 

start = datetime(2010, 1, 1) 
end = datetime(2012, 12, 31) 

startrng = pd.bdate_range(start,end,freq='BQS-MAR') 
startrng = startrng + pd.datetools.WeekOfMonth(week=1,weekday=3) 

ts = pd.Series(np.random.randn(len(startrng)),index=startrng) 

我得到如下結果:

2010-03-11 -0.585671 
2010-06-10 -1.201917 
2010-09-09 -0.063487 
2010-12-09 0.221270 
2011-03-10 -0.239836 
2011-06-09 0.256052 
2011-09-08 1.074758 
2011-12-08 0.962388 
2012-03-08 -1.601438 
2012-06-14 0.854736 
2012-09-13 1.532970 
2012-12-13 -0.084027 

雖然大部分日期的偏移作品,2012-06-14實際上是該月的第三個星期四,隨着2012-06-01開始上星期五。我必須生成一個可以追溯到幾年的日期範圍,並且手動檢查生成的所有日期的效率並不高。

是否有另一種方法可以生成正確的結果集?

+1

我只是看着日曆,並2012-06-14 ** **是六月份的第二個星期四。 21日將是第三個星期四。 – Tyanna

+1

該月的第二個xday總是> = 8且<= 14。 –

+0

@Tyanna這是一個重要的時刻。在這種情況下,我需要將標準更改爲本月第二週的週四。謝謝你指出那愚蠢的監督。 – mrkre

回答

1

答:

startrng = startrng + pd.datetools.WeekOfMonth(week=1,weekday=4) - pd.datetools.BDay()