我正在创建一个系统来跟踪股票在一段时间内的表现。我打算让它做的是从电子表格中提取股票代码,在雅虎财经上搜索这些股票代码,提取这些股票的历史数据,然后将这些数据作为字典或列表存储在股票代码中。虽然我已经让webscrape很好地工作,并将数据附加到股票代码中,但我正在努力将数据保存在for循环中,以便以后可以访问它
以下是电子表格的内容:
Ticker Name
WMT Walmart
AMZN Amazon
AAPL Apple
CVS CVS Health
将工作表的内容放入变量后,我创建了以下系列:
p_ticker = p_data['Ticker']
然后,我设置了一个循环,该循环在工作表中运行,并从正确的位置应用股票代码
for ticker in p_ticker:
scrape_string = f"https://query1.finance.yahoo.com/v7/finance/download/{ticker}?period1=1480636740&period2=1606867140&interval=1d&events=history&includeAdjustedClose=true"
ticker_data = {ticker:scrape_string}
print(ticker_data)
然而,对于循环,字典和列表并不是专门的领域,我希望能得到任何建议
我尝试了以下几点:
for ticker in p_ticker:
scrape_string = f"https://query1.finance.yahoo.com/v7/finance/download/{ticker}?period1=1480636740&period2=1606867140&interval=1d&events=history&includeAdjustedClose=true"
ticker_data = []
ticker_data.append = pd.read_csv(ticker)
这会导致一个错误:“FileNotFoundError:[Errno 2]文件WMT不存在:'WMT'”
如果我尝试这样做:
for ticker in p_ticker:
scrape_string = f"https://query1.finance.yahoo.com/v7/finance/download/{ticker}?period1=1480636740&period2=1606867140&interval=1d&events=history&includeAdjustedClose=true"
ticker_data = []
ticker_data.append = pd.read_csv(scrape_string)
我得到AttributeError: ‘list’ object attribute ‘append’ is read-only
不幸的是,我有点困惑于如何推进这一点;如果有人有任何想法,这将是非常有帮助的,我将非常感激
下面是一个非常简单的解决方案,它使用一个函数,从提供的日期范围内的所有标记器返回一个组合数据帧:
输出:
通过使用生成器而不是for循环
pd.concat()
可以改进这一点。此外,由于Yahoo API的工作方式,结束日期应设置为所需结束日期的结束或下一个结束日期的开始您需要将字典移出循环,如下所示:
相关问题 更多 >
编程相关推荐