我正在使用API来获取指数中股票的数据。API有一个最大请求限制,所以我正在解析数据。在每一次传递中,我都会附加API返回的Pandas,这样到最后,我就会得到一个包含完整索引的大数据帧--这在一个请求中是不会被接受的。
以下内容是正确的:
# number of iterations
no_of_stocks = len(Mnemonics)
iterations = math.ceil(no_of_stocks / 50) - 1
# first iteration
string_mnemonics = ', '.join(Mnemonics[0:50])
stocks = ds.get_data(tickers= string_mnemonics, fields=['P'], start = '-1Y', end = '-0d', freq = 'D')
for i in range(iterations):
to_parse_mnemonics = Mnemonics[(i+1)*50 : (i+2)*50]
string = ', '.join(to_parse_mnemonics)
stocks_temp = ds.get_data(tickers= string, fields=['P'], start = '-1Y', end = '-0d', freq = 'D')
stocks = pd.concat([stocks, stocks_temp], axis = 1)对我来说这看起来很奇怪。我的问题是:有没有办法只用一行代码发出请求?我认为do-while循环可以工作--或者定义一个完全在循环中定义的灵活的DataFrame。
我在编码和Python方面是个新手。
提前谢谢你。
发布于 2020-04-24 13:31:58
我不认为有一个单行的解决方案,但我相信它可以简化一点。
# number of iterations
no_of_stocks = len(Mnemonics)
iterations = math.ceil(no_of_stocks / 50)
stocks = []
for i in range(iterations):
string = ', '.join(Mnemonics[i*50 : (i+1)*50])
stocks.append(ds.get_data(tickers=string, fields=['P'], start='-1Y', end='-0d', freq = 'D'))
stocks = pd.concat(stocks, axis=1)另外,我认为在连接时清除索引是个好主意,因为之前的索引没有太多用处,所以可以在调用pd.concat时传入ignore_index=True
https://stackoverflow.com/questions/61401403
复制相似问题