Мой вопрос отличается от следующего:
Вопрос1: Неделя месяца pandas Quesiton2: Номер недели месяца
В приведенном выше вопросе предполагается, что в неделе 7 дней. Он пытается подсчитать количество имеющихся 7 дней в неделе. Мои данные состоят из дневных цен (в рабочие дни), и иногда могут отсутствовать дни недели, потому что рынок был закрыт на праздник.
Мой вопрос: как найти неделю месяца с учетом даты . Обратите внимание, что я выделил «задана дата», потому что этот процесс обрабатывается ежедневно, поэтому любые ответы, которые выглядят вперед до конца месяца, скорее всего, не будут работать.
Мои попыток было заглядывать вперед, что не оптимально:
def is_third_friday(s):
d = datetime.datetime.strptime(s, '%Y-%m-%d')
return d.weekday() == 5 and 15 <= d.day <= 21
dow = deepcopy(data['Close'] * np.nan).to_frame()
dow.columns = ['OpexFriday']
dow['next_date'] = pd.Series([str(i.date() + datetime.timedelta(days=1)) for i in dow.index]).values
dow['OpexFriday'] = pd.Series([is_third_friday(str(i)) for i in dow['next_date']]).values
dow['OpexWeek'] = (dow['OpexFriday'] * 1).replace(0, np.nan).fillna(method='bfill', limit=4).replace(np.nan, 0) == True
Я не знаю, как предоставить образец data
, но если вы go на страницу «https://aroussi.com/post/python-yahoo-finance» и используете авторов yfinance package, вы сможете получить некоторые данные о ценах для работы.
Функции, указанные выше, найдут 3-ю неделю месяца (все верно). Кроме того, он также установит пятницу этой недели.
Дайте мне знать, если вы заметите какие-либо проблемы с вопросом или его дубликат. Некоторое время я искал решение.