4

3 月から始まる各四半期開始の第 2 木曜日の日付範囲を生成しようとしているときに、奇妙な問題が発生しました。

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 は実際には月の第 3 木曜日であり、2012-06-01 は金曜日から始まります。数年前の日付範囲を生成する必要があり、生成されたすべての日付を手動で確認するのは生産的ではありません。

代わりに正しい結果セットを生成する別の方法はありますか?

4

1 に答える 1

1

答え:

startrng = startrng + pd.datetools.WeekOfMonth(week=1,weekday=4) - pd.datetools.BDay()
于 2012-10-09T03:40:31.237 に答える