抓取当前股票价格并创建数据框
Posted
技术标签:
【中文标题】抓取当前股票价格并创建数据框【英文标题】:Scrape current stock price and create data frame 【发布时间】:2021-03-04 04:03:53 【问题描述】:我有一个名为 Symbols 的 Pandas 列表,其中包含 30 个股票代码,例如 Apple ->> AAPL,我想获取每个代码的当前股票价格并使用此信息填充数据框。两列:第一列带有股票代码,第二列带有当前价格。运行这部分脚本时,我继续收到以下错误消息:
“ValueError:如果使用所有标量值,则必须传递一个索引”
Stock = []
Price = []
df_temp = []
for symbol in Symbols:
try:
params =
'symbols': symbol,
'range': '1d',
'interval': '1d',
'indicators': 'close',
'includeTimestamps': 'false',
'includePrePost': 'false',
'corsDomain': 'finance.yahoo.com',
'.tsrc': 'finance'
url = 'https://query1.finance.yahoo.com/v7/finance/spark'
r = requests.get(url, params=params)
data = r.json()
df_stock = pd.DataFrame('Ticker' : symbol,
'Current Price' : data['spark']['result'][0]['response'][0]['indicators']['quote'][0]['close'][0]
)
df_temp.append(df_stock)
df_temp = pd.concat(df_temp, axis = 1)
except KeyError:
continue
【问题讨论】:
【参考方案1】:只需要改变一个部分-
df_stock = pd.DataFrame('Ticker' : [symbol],
'Current Price' : [data['spark']['result'][0]['response'][0]['indicators']['quote'][0]['close'][0]]
)
输出
Ticker Current Price
0 AAPL 118.119
完整代码
Stock = []
Price = []
df_temp = pd.DataFrame()
for symbol in ['AAPL', 'IBM', 'NKE', 'FB']:
try:
params =
'symbols': symbol,
'range': '1d',
'interval': '1d',
'indicators': 'close',
'includeTimestamps': 'false',
'includePrePost': 'false',
'corsDomain': 'finance.yahoo.com',
'.tsrc': 'finance'
url = 'https://query1.finance.yahoo.com/v7/finance/spark'
r = requests.get(url, params=params)
data = r.json()
df_stock = pd.DataFrame('Ticker' : [symbol],
'Current Price' : [data['spark']['result'][0]['response'][0]['indicators']['quote'][0]['close'][0]]
)
df_temp = df_temp.append(df_stock)
except KeyError:
continue
说明
您作为值传递给 df_stock
的是标量值,包裹在列表中即可解决。
【讨论】:
但是当你通过它传递多个股票代码时,它会给出一个数据框,其中第一列中的股票代码和第一个股票代码的股票价格:Ticker Current Price 0 [AAPL, IBM, NKE, FB ] 118.155 @JuneSmith 您的代码中还有几个逻辑错误,请立即修改以上是关于抓取当前股票价格并创建数据框的主要内容,如果未能解决你的问题,请参考以下文章
python 设计一个名为Stock的类来表示一个公司的股票?