私は2つのdatetimeインデックスを持っています.1つは、営業日のdate_range
であり、もう1つは休日のリストです。2つの日時インデックスをフィルタリングする方法は?
休日のリストを開始日と終了日でフィルタリングします。しかし、今私はそれらに参加し、重複(休日と取引日の両方が存在する)を削除する必要があります。
最後に、daterangeを書式設定された文字列、つまりyyyy_mm_dd
のリストに変換する必要があります。これを後で繰り返すことができます。ここで
は、これまでの私のコードです:
import datetime
import pandas as pd
from pandas.tseries.holiday import AbstractHolidayCalendar, Holiday, nearest_workday, \
USMartinLutherKingJr, USPresidentsDay, GoodFriday, USMemorialDay, \
USLaborDay, USThanksgivingDay
class USTradingCalendar(AbstractHolidayCalendar):
rules = [
Holiday('NewYearsDay', month=1, day=1, observance=nearest_workday),
USMartinLutherKingJr,
USPresidentsDay,
GoodFriday,
USMemorialDay,
Holiday('USIndependenceDay', month=7, day=4, observance=nearest_workday),
USLaborDay,
USThanksgivingDay,
Holiday('Christmas', month=12, day=25, observance=nearest_workday)
]
def get_trading_close_holidays(year):
inst = USTradingCalendar()
return inst.holidays(datetime.datetime(year-1, 12, 31),
datetime.datetime(year, 12, 31))
start_date = "2017_07_01"
end_date = "2017_08_31"
start_date = datetime.datetime.strptime(start_date,"%Y_%m_%d").date()
end_date = datetime.datetime.strptime(end_date,"%Y_%m_%d").date()
date_range = pd.bdate_range(start = start_date, end = end_date, name =
"trading_days")
holidays = get_trading_close_holidays(start_date.year)
holidays = holidays.where((holidays.date > start_date) &
(holidays.date < end_date))
holidays = holidays.dropna(how = 'any')
date_range = date_range.where(~(date_range.trading_days.isin(holidays)))
タイトルは質問に質問しますが、投稿は問題を特定していません具体的な質問はしない。あなたは、ニーズを記述するだけです。エラーはありますか?望ましくない結果?希望の出力を表示してください。 – Parfait
申し訳ありません - 私の最後のコード行はここではうまくいきません。私の質問はここ2倍です1)2つの日時インデックスを結合して重複を落とすようなベストプラクティス方法のために2)それらの日時オブジェクトを取得して文字列としてフォーマットする方法 – cifc