对于Pandas的循环:如何改进代码



我使用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方面是个新手。

提前谢谢。

我不认为有一个单行解决方案,但我相信它可以简化一点。

# 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

最新更新