首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Pandas的For循环:如何改进代码?

使用Pandas的For循环:如何改进代码?
EN

Stack Overflow用户
提问于 2020-04-24 12:53:47
回答 1查看 24关注 0票数 0

我正在使用API来获取指数中股票的数据。API有一个最大请求限制,所以我正在解析数据。在每一次传递中,我都会附加API返回的Pandas,这样到最后,我就会得到一个包含完整索引的大数据帧--这在一个请求中是不会被接受的。

以下内容是正确的:

代码语言:javascript
复制
 # 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方面是个新手。

提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2020-04-24 13:31:58

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

代码语言:javascript
复制
# 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61401403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档