我的问题与以下不同:
问题1:Week of a month pandas 问题2:Week number of the month
上述问题涉及假设一周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
,但如果您转到“https://aroussi.com/post/python-yahoo-finance“翻页并使用authors yfinance软件包,您将能够获得一些价格数据
上述函数将查找当月的第三周(均为真)。此外,它还将设定该周的星期五
如果你发现这个问题有任何问题或者是重复的,请告诉我。我已经寻找了一段时间的解决办法
一种方法是使用
timedelta
将任何日期更改为下一个星期五,然后检查下一个星期五是否在15到21之间然后你得到
注意:需要知道的一件事是,OpexWeek之前的周六和周日是真实的,但是因为您说您的数据是工作日,所以这不重要
datetime系列上使用的pandas版本可以是:
举个小例子:
我们可以轻松地修改您的函数以处理索引:
输出:
相关问题 更多 >
编程相关推荐