0

我从返回 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

有没有办法做到这一点(或更好的方式来实现我的目标)?

4

1 回答 1

1

我认为这应该有效

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)
    temp_df =pd.DataFrame(jsd['Time Series (Daily)']).T
    temp_df['symbol'] = i
    df = df.append(temp_df)
   
df

于 2020-07-30T04:36:13.217 回答