我有从yahoo下载数据的代码:
#gets data from yahoo finance
stocks = list(newmerge.index)
start = dt.datetime(2012,1,1)
end = dt.datetime.today()
yahoodata = pdr.get_data_yahoo(stocks,start,end)
cleanData = yahoodata.loc['Adj Close']
dataFrame = pd.DataFrame(cleanData, columns=stocks)
它运行良好,但我最近注意到一个问题,它不能下载股票"BRK.B“和"BR.B”的数据。
我有一个名为" stocks“的所有股票的列表,下面是我所做的,但它仍然没有显示其中带点的股票的数据:
def stocksdot(stocks):
stocks_dash = str(stocks).replace('.','-')
stockslist = stocks_dash.split(',')
return stockslist
stocksdot(stocks)
我的预期输出将是下载所有股票,甚至是那些带圆点的股票。有什么办法可以规避吗?
发布于 2017-07-29 01:48:13
你的问题是雅虎财经没有使用“。跟踪不同类别的股票的符号。因此,"BRK.B“和"BR.B”实际上是"BRKB“和"BRB”。
使用雅虎财经的python SDK,我编写了一个小脚本来测试雅虎财经是否可以找到带有"BR.B“或”br.b“的股票的信息。
from yahoo_finance import Share
stock = Share('BRK.B')
print(stock.get_price())
这个结果是:
>>>> None
带点的股票报价器被用作特定股票的类型或类别的简写。您可以了解更多here。
要绕过它,您可以删除".“。例如,当我使用"BRKB“而不是"BRK.B”时,我得到的结果是:
>>>> 173.05
这是伯克希尔哈撒韦公司B类股票的当前价格。
替换".“以编程方式使用Python的.replace()方法。
for stock in stocks:
stock = stock.replace(".", "") # Replaces all "." with "" in the string
# stock
发布于 2020-08-11 00:10:10
你的问题是雅虎财经没有使用“。跟踪不同类别的股票的符号。因此,"BRK.B“和"BR.B”实际上是"BRKB“和"BRB”。-我的评论:现在"BRK.B“和"BR.B”实际上是"BRK-B“和"BR-B”。
https://stackoverflow.com/questions/45379155
复制相似问题