一些ETF代码不适用于Yahoo Finance DataReader

时间:2018-01-11 21:04:19

标签: python pandas finance yahoo-finance pandas-datareader

我使用Pandas-Datareader通过Yahoo Finance从一堆ETF收集数据,即使数据似乎可用,我也会在少数代码中收到奇怪的错误。代码非常简单:

EMLP GDVD (Failed to get data for GDVD) AMZA RFDI ARKK ARKW SECT (Failed to get data for SECT)

适用于我的大多数代码但不是全部:

{"finance": {"error": {"code": "Unauthorized","description": "Invalid cookie"}}}

EMLP工作正常。即使网站上有url for GDVD,Datareader也会生成类似historical data for GDVD的网址。我在使用GDVD网址的Chrome中看到以下错误:

 ['GDVD', 'SECT', 'DWLD', 'CCOR', 'DFNL', 'DUSA', 'AIEQ', 'CACG', 'QSY', 'ACT', 'TAXR', 'TTAI', 'FLIO', 'FMDG', 'VGFO', 'FFSG', 'LRGE', 'YLDE', 'VESH', 'DEMS', 'SQZZ']

有没有办法获得这些代码的历史价格?任何人都可以看到模式的失败代码的完整列表:

{{1}}

1 个答案:

答案 0 :(得分:0)

使用yahoo_fin包,我能够获取您列出的代码的数据。请查看此链接:http://theautomatic.net/yahoo_fin-documentation/

我的代码如下所示:

from yahoo_fin.stock_info import get_data

tickers =  ['GDVD', 'SECT', 'DWLD', 'CCOR', 'DFNL', 'DUSA', 'AIEQ', 'CACG',
            'QSY', 'ACT', 'TAXR', 'TTAI', 'FLIO', 'FMDG', 'VGFO', 'FFSG', 
            'LRGE', 'YLDE', 'VESH', 'DEMS', 'SQZZ']

stocks = {}

for ticker in tickers:

    stocks[ticker] = get_data(ticker)

因此,数据存储在字典中,其中键是代码,值是包含每个股票数据的数据框。

或者,您可以使用字典理解,如下所示:

stocks = {ticker : get_data(ticker) for ticker in tickers}

如果要将所有数据集折叠到单个数据框中,可以使用functools包,如下所示:

from functools import reduce

combined = reduce(lambda x,y: x.append(y), stocks.values())