我从返回 JSON 的 Alpha Vantage API 中提取每日股票数据。因为我要为多家公司提取数据,所以我创建了一个 for 循环,因此我不必为每家公司重复该过程(在下面的示例中,这两家公司是“zm”和“sq”)。
for 循环应该创建一个数据框,将每个公司的数据附加到底部。我面临的问题是,当我创建一个列来显示公司符号时,它会在每次遍历循环时覆盖前一个公司的符号。如何在不覆盖以前公司符号的情况下添加到公司符号列?
ticks = ['zm','sq']
df = pd.DataFrame()
for i in ticks:
response = requests.request("GET", url="https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol="+i+"&outputsize=full&apikey=DEMOKEY")
jsd = json.loads(response.text)
df = df.append(pd.DataFrame(jsd['Time Series (Daily)']).T)
df['symbol'] = i
df
这让我很接近,但在我创建的名为“符号”的列中,每一行都说“sq”而不是“zm”行说“zm”。'zm' 行在循环中第二次被 'sq' 覆盖。
Date 1. open 2. high 3. low 4. close 5. volume symbol
2020-07-29 255.5500 259.9300 251.1500 252.3900 3260312 sq
2020-07-28 252.7000 258.9100 251.3200 252.1800 3366216 sq
2020-07-27 249.2800 252.9700 246.2200 252.3300 3328563 sq
2020-07-24 246.2000 250.2100 237.2000 246.5600 4303198 sq
2020-07-23 260.8400 264.9000 249.2100 251.5000 4589358 sq
... ... ... ... ... ... ...
2015-11-25 12.1200 12.4000 11.8500 11.9000 3583421 sq
2015-11-24 12.0000 12.2300 11.5200 12.0200 4714682 sq
2015-11-23 13.0000 13.1500 12.1000 12.1200 5172246 sq
2015-11-20 13.9200 14.0500 12.5000 12.8500 16550328 sq
2015-11-19 11.2000 14.7800 9.0000 13.0700 47466050 sq
有没有办法做到这一点(或更好的方式来实现我的目标)?