繁体   English   中英

如何确定市场结束的实际星期几?

[英]How to identify actual day of week that markets end on?

截至 2021 年 12 月 30 日----我确实明白了这一点。 Python 的新手,所以这不是优化或最优雅的,但它确实返回任何市场周结束的那一天。 由于我如何指定开始和结束日期,dataframe 总是从星期一开始,到最后一个交易日结束。 基本上,它查看连续行中的每个日期,将天数差异分配给新列。 除市场周的最后一天外,每一行都将返回 -1。 所有数据的最后一行也返回一个“NaN”,我必须处理它。 然后我只删除 Days 列中带有 -1 的行。 感谢您的反馈....这是执行该工作的代码的 rest,它遵循我之前提供的代码。

data['Date']  = pd.to_datetime(data['Date'])
data['Days_from_date'] = pd.DatetimeIndex(data['Date']).day

data['Days'] = data['Days_from_date'] - data['Days_from_date'].shift(-1)
data=data.replace(np.nan,-1)
data["Days"]=data["Days"].astype(int)

data = data[data['Days'] != -1]
data = data[data['Days'].ne(-1)]

这是以前的帖子。。。。。。

我目前有 python 代码,可以在一段时间内(目前为 50 天)获取各种 ETF 代码的历史市场信息。 我通过 Power BI 运行此代码。 完成测试后,我将获得大约 40 周的 60 种 ETF 数据。 当前代码复制如下。

我想尽量减少返回到每周最后个交易日生成的 CLOSE 数据的数据量。 通常这是星期五,但有时可能是星期四,我想可能是星期三。

我不知道如何确定每周的最后一个交易日,然后将这些数据提取到 dataframe 中。 或者,我想它可以提取所有数据,然后删除不需要的行 - 我不确定哪个是更好的解决方案,而且,无论如何,我不知道该怎么做!

当前代码在这里,使用 Python 3.10 和 Visual Studio Code 进行测试......

import yfinance as yf
import pandas as pd
from datetime import date
from datetime import timedelta

enddate = date.today()
startdate = enddate - timedelta(days=50)

tickerStrings = ['VUG', 'VV', 'MGC', 'MGK', 'VOO', 'VXF', 'VBK', 'VB']

df_list = list()
for ticker in tickerStrings:
   data = yf.download(ticker, start=startdate, group_by="Ticker")
   data['Ticker'] = ticker  
   df_list.append(data)

data = pd.concat(df_list)
data = data.drop(columns=["Adj Close", "High", "Low", "Open", "Volume"])
data = data.reset_index()

正如我评论的那样,我认为您可以通过从日期数据中获取周数、对其进行分组并获取最后一行来获得所需的数据。 例如,如果星期五是假期,我认为星期四是周数的最后一个数据。

import yfinance as yf
import pandas as pd
from datetime import date
from datetime import timedelta

enddate = date.today()
startdate = enddate - timedelta(days=50)

tickerStrings = ['VUG', 'VV', 'MGC', 'MGK', 'VOO', 'VXF', 'VBK', 'VB']

df = pd.DataFrame()
for ticker in tickerStrings:
    data = yf.download(ticker, start=startdate, progress=False)['Close'].to_frame('Close')
    data['Ticker'] = ticker  
    df = df.append(data)

df.reset_index(inplace=True)

df['week_no'] = df['Date'].dt.isocalendar().week
data = df.groupby(['Ticker','week_no']).tail(1).sort_values('Date', ascending=True)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM