【发布时间】:2018-11-21 06:51:16
【问题描述】:
这里是 Python 新手(对不起,如果这是一个愚蠢的问题)!我目前正在使用 for 循环来下载和操作数据。不幸的是,我偶尔会遇到导致部分循环失败的简短网络问题。
原来,我在做这样的事情:
# Import Modules
import fix_yahoo_finance as yf
import pandas as pd
from stockstats import StockDataFrame as sdf
# Stock Tickers to Gather Data For - in my full code I have thousands of tickers
Ticker = ['MSFT','SPY','GOOG']
# Data Start and End Data
Data_Start_Date = '2017-03-01'
Data_End_Date = '2017-06-01'
# Create Data List to Append
DataList = pd.DataFrame([])
# Initialize Loop
for i in Ticker:
# Download Data
data = yf.download(i, Data_Start_Date, Data_End_Date)
# Create StockDataFrame
stock_df = sdf.retype(data)
# Calculate RSI
data['rsi'] = stock_df['rsi_14']
DataList.append(pd.DataFrame(data))
DataList.to_csv('DataList.csv',header=True,index=True)
使用这种基本布局,每当我遇到网络错误时,都会导致整个程序停止并出现错误。
我做了一些研究并尝试将“for循环”修改为以下内容:
for i in Ticker:
try:
# Download Data
data = yf.download(i, Data_Start_Date, Data_End_Date)
# Create StockDataFrame
stock_df = sdf.retype(data)
# Calculate RSI
data['rsi'] = stock_df['rsi_14']
DataList.append(pd.DataFrame(data))
except:
continue
这样,代码总是可以毫无问题地运行,但每当我遇到网络错误时,它就会跳过它所在的所有代码(无法下载它们的数据)。
我希望它为每个股票下载一次数据。如果失败,我希望它再试一次,直到成功一次,然后继续下一个代码。我尝试使用while True 及其变体,但它导致循环多次下载同一个代码!
非常感谢任何帮助或建议!谢谢!
【问题讨论】:
-
请在循环尝试时向您展示
-
斯蒂芬,请accept an answer;它为任何阅读您的问题的人提供了关闭,并且它为回答者提供了一点感激之情。由于您只能接受一个,我建议投票作为一个额外的步骤来表达对多个人的感谢。
标签: python pandas loops for-loop yahoo-api