我正在尝试从Quandl获取股票市场数据,以获取从S& P 500中删除的股票代码列表。
API调用包含在一个函数和一个for循环中,它遍历一个ticker符号列表并将它们传递给API调用语句。但是,在运行该函数时,我遇到了递归错误。
这是我的代码块。该函数接受两个参数,API调用和tickr符号列表。
API调用由qd.get_table语句进行:
def get_quandl_data(quandl_code, tickr):
tickr_list = []
for i in tickr:
tickr_list.append(i)
#print(tickr_list[0])
#API call to fetch data
df = qd.get_table(quandl_code, qopts = {'columns': ['ticker', 'date', 'close']}, ticker=tickr_list, date = { 'gte': '2014-01-01', 'lte': '2017-11-01' }, paginate=True)
tickr_list.remove(i)
#Save data as pickle
df.to_pickle('qd_data.pickle')
return df
抛出的错误是: “RecursionError:调用Python对象时超出了最大递归深度”,它指向代码中的API调用行。
回溯:
---------------------------------------------------------------------------
RecursionError Traceback (most recent call last)
<ipython-input-49-950ac093b844> in <module>()
----> 1 qd_data = get_quandl_data('WIKI/PRICES', tickrs)
2 qd_data.head()
<ipython-input-48-d23d88ffb155> in get_quandl_data(quandl_code, tickr)
5 #print(tickr_list[0])
6 #API call to fetch data
----> 7 df = qd.get_table(quandl_code, qopts = {'columns': ['ticker', 'date', 'close']}, ticker=tickr_list, date = { 'gte': '2014-01-01', 'lte': '2017-11-01' }, paginate=True)
8 tickr_list.remove(i)
9 #Save data as pickle
代码的期望行为是创建一个数据框,其中包含API为列表中的所有股票代码符号提取的股票市场数据。