gpt4 book ai didi

python - Pandas 每月营业日股价数据

转载 作者:行者123 更新时间:2023-12-03 09:27:24 26 4
gpt4 key购买 nike

我的问题与以下不同:
问题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
我不知道如何提供一些 sample data但是,如果您转到“https://aroussi.com/post/python-yahoo-finance”页面并使用作者 yfinance 包,您将能够获得一些价格数据。
上面的函数将找到该月的第 3 周(全部为 True)。此外,它还将设置该周的星期五。
如果您发现该问题有任何问题或是否重复,请告诉我。我已经搜索了一段时间以寻找解决方案。

最佳答案

一种方法是使用 timedelta将任何日期更改为下一个星期五,然后检查下一个星期五是否在 15 到 21 之间。

from datetime import datetime, timedelta
def OpexWeek (s):
d = datetime.strptime(s, '%Y-%m-%d')
day = (d+timedelta(days=(4-d.weekday())%7)).day
return (day>=15) & (day<=21)

然后你得到
#for the example the second Friday of June 2020:
OpexWeek('2020-06-12')
False

# the Monday after is True because part of the OpexWeek
OpexWeek('2020-06-15')
True

注意:要知道的一件事是,OpexWeek 之前的周六和周日是 True,但是因为您说您的数据是工作日,所以应该没有关系。

在日期时间系列上使用的 Pandas 版本可能是:
def OpexWeekPd (ser):
return (ser+pd.to_timedelta((4-ser.dt.weekday)%7, unit='d')).dt.day.between(15,21)

举个小例子:
print (
pd.DataFrame({'date':pd.bdate_range('2020-06-01', '2020-06-30').astype(str)})
.assign(isOpexWeek=lambda x: x['date'].apply(OpexWeek),
isIpexWeekPd=lambda x: OpexWeekPd(pd.to_datetime(x['date'])))
)
date isOpexWeek isIpexWeekPd
0 2020-06-01 False False
1 2020-06-02 False False
2 2020-06-03 False False
3 2020-06-04 False False
4 2020-06-05 False False
5 2020-06-08 False False
6 2020-06-09 False False
7 2020-06-10 False False
8 2020-06-11 False False
9 2020-06-12 False False
10 2020-06-15 True True
11 2020-06-16 True True
12 2020-06-17 True True
13 2020-06-18 True True
14 2020-06-19 True True
15 2020-06-22 False False
16 2020-06-23 False False
17 2020-06-24 False False
18 2020-06-25 False False
19 2020-06-26 False False
20 2020-06-29 False False
21 2020-06-30 False False

关于python - Pandas 每月营业日股价数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62071802/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com