pandas 如何将连接项添加到从requests.get()接收到的主 Dataframe 中

ktecyv1j  于 2023-02-11  发布在  其他
关注(0)|答案(1)|浏览(91)

我有一个API调用,它在for循环中返回给定股票代码的日期和调整后的收盘价。
有1100个唯一的股票代码x 252天,我想创建一个1100x252的 Dataframe ,索引为日期。
问题是我一次只能查询一个API代码,它返回下面的(前几行的示例),这是AAPL的:

[{'date': '2020-01-02T00:00:00.000Z', 'adjClose': 73.4677943274},
 {'date': '2020-01-03T00:00:00.000Z', 'adjClose': 72.7535410914},
 {'date': '2020-01-06T00:00:00.000Z', 'adjClose': 73.3332603275},
 {'date': '2020-01-07T00:00:00.000Z', 'adjClose': 72.9883640731},
 {'date': '2020-01-08T00:00:00.000Z', 'adjClose': 74.1624789816},
 {'date': '2020-01-09T00:00:00.000Z', 'adjClose': 75.7377498172},
 {'date': '2020-01-10T00:00:00.000Z', 'adjClose': 75.908974908}]

我尝试创建的是一个循环,它提取adjClose,并将它们合并到一个主 Dataframe 中。
我目前正在通过以下途径进行循环:

tickers = list(data.ticker.unique)

for ticker in tickers:
    api_call = reqests.get(f'api_call_from_site.com/stonkz&ticker={tickers}')

    df = pd.DataFrame(api_call.json())

然后我想把每个特定API调用中的adjClose连接到“master dataframe”,但是我不知道从哪里开始,看起来像下面这样:
注:AAPL(和其他股票代码)的值与上述类似。

date        AAPL    TSLA    AMD    NVDA    etc
2020-01-02  75      110     65     205     100
2020-01-03  76      111     66     206     101
2020-01-04  77      112     67     207     102
2020-01-05  78      113     68     208     103
2020-01-06  79      114     69     209     104
2020-01-07  80      115     70     210     105
2020-01-08  81      116     71     211     106
2020-01-09  82      117     72     212     107
2020-01-10  83      118     73     213     108

任何和所有的帮助都是感激的,并提前感谢你。

gwbalxhn

gwbalxhn1#

第一个想法是通过append创建Series的列表,然后加入concat

L = []
for ticker in tickers:
    api_call = reqests.get(f'api_call_from_site.com/stonkz&ticker={ticker}')

    df = pd.DataFrame(api_call.json()).set_index('date')['adjClose'].rename(ticker)
    L.append(df)
    
df_big = pd.concat(L, axis=1)

或者创建字典列表out和具有转置的最后调用DataFrame

out = []
for ticker in tickers:
    api_call = reqests.get(f'api_call_from_site.com/stonkz&ticker={ticker}').json()
    d = {x['date']:x['adjClose'] for x in api_call}
    out.append(d)

df_big = pd.DataFrame(out, index=tickers).T

相关问题