[英]Resample pandas DataFrame of OHLC data into three-day bars ignoring weekends
我有以開盤價、最高價、最低價、收盤價和日期為索引的每日價格數據。 我想創建三天的柱狀圖,但我希望這些柱狀圖“環繞周末”,這樣我最終會得到 MTuW、TuWTh、WThF、ThFM 和 FMTu 柱狀圖。
(MTuW = 星期一星期二星期三)
(FMTu = 星期五星期一星期二)
(FSaSu = 周五周六周日)
我試過
df = df.asfreq('B')
df = df.resample('3D').mean()
但這似乎只適用於 MTuW、TuWTh 和 WThF 金條。 其他柱狀圖似乎沒有跳過周末,這意味着本應成為 FMTu 柱狀圖的實際上是一個 FSaSu 柱狀圖,或更准確地說只是一個星期五柱狀圖。
我相信有一種方法可以使這項工作也許與
from pandas.tseries.offsets import BDay
但我不清楚如何讓它發揮作用。
我沒有對此進行測試,但我認為您只需要使用:
df = df.resample('3B').mean()
為了也適應假期,使用自定義規則重新采樣:
from pandas.tseries.offsets import CustomBusinessDay
from pandas.tseries.holiday import USFederalHolidayCalendar
bday_us = CustomBusinessDay(calendar=USFederalHolidayCalendar())
df = df.resample(bday_us).mean()
我在這里使用了USFederalHolidayCalendar
。 要在這樣的假期類中獲得假期的概述:
>>> pprint(USFederalHolidayCalendar().rules)
[Holiday: New Years Day (month=1, day=1, observance=<function nearest_workday at 0x10db3ce18>),
Holiday: Dr. Martin Luther King Jr. (month=1, day=1, offset=<DateOffset: weekday=MO(+3)>),
Holiday: Presidents Day (month=2, day=1, offset=<DateOffset: weekday=MO(+3)>),
Holiday: MemorialDay (month=5, day=31, offset=<DateOffset: weekday=MO(-1)>),
Holiday: July 4th (month=7, day=4, observance=<function nearest_workday at 0x10db3ce18>),
Holiday: Labor Day (month=9, day=1, offset=<DateOffset: weekday=MO(+1)>),
Holiday: Columbus Day (month=10, day=1, offset=<DateOffset: weekday=MO(+2)>),
Holiday: Veterans Day (month=11, day=11, observance=<function nearest_workday at 0x10db3ce18>),
Holiday: Thanksgiving (month=11, day=1, offset=<DateOffset: weekday=TH(+4)>),
Holiday: Christmas (month=12, day=25, observance=<function nearest_workday at 0x10db3ce18>)]
顯然,這樣的節日對象也可以從頭開始定制和構建。 有關假期課程的更多信息: https ://pandas.pydata.org/pandas-docs/stable/timeseries.html#holidays-holiday-calendars
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.