7

Pandasでは現在、特定の日付に営業日を追加できますdatetime.today() + 3*BDay()。休日と週末の特定のDateIndexを除外するために、営業日のアイデアを拡張したいと思います。DateIndexをオフセットに組み込むことは可能ですか?

4

2 に答える 2

8

CustomBusinessDayクラスは、次のようなことができるようになるPandasの次の0.12リリースにマージされました。

>>> from pandas.tseries.offsets import CustomBusinessDay
>>> 
>>> # As an interesting example, let's look at Egypt where
>>> # a Friday-Saturday weekend is observed.
>>> weekmask_egypt = 'Sun Mon Tue Wed Thu'
>>> 
>>> # They also observe International Workers' Day so let's
>>> # add that as a holiday for a couple of years
>>> holidays = ['2012-05-01', datetime(2013, 5, 1), np.datetime64('2014-05-01')]
>>> 
>>> bday_egypt = CustomBusinessDay(holidays=holidays, weekmask=weekmask_egypt)
>>> dt = datetime(2013, 4, 30)
>>> print dt + 2 * bday_egypt
2013-05-05 00:00:00
>>> 
>>> dts = date_range(dt, periods=5, freq=bday_egypt).to_series()
>>> print dts
2013-04-30   2013-04-30 00:00:00
2013-05-02   2013-05-02 00:00:00
2013-05-05   2013-05-05 00:00:00
2013-05-06   2013-05-06 00:00:00
2013-05-07   2013-05-07 00:00:00
Freq: C, dtype: datetime64[ns]
>>> 
>>> print Series(dts.weekday, dts).map(Series('Mon Tue Wed Thu Fri Sat Sun'.split()))
2013-04-30    Tue
2013-05-02    Thu
2013-05-05    Sun
2013-05-06    Mon
2013-05-07    Tue
dtype: object

HTH

于 2013-06-21T16:16:16.510 に答える
1

現在、カスタムサブクラスを作成する必要があると思います。休日のカレンダーを考慮に入れるには、メソッドapplyとメソッドをオーバーライドする必要があります。onOffset

ただし、最終的には、business-X頻度にオプションの休日カレンダーパラメータを追加する必要があります。私はそれを追跡するためにgithubの問題を作成しました:https ://github.com/pydata/pandas/issues/2301

于 2012-11-20T14:15:25.400 に答える