将 Alphavantage API 响应转换为 DataFrame

问题描述

我已经在 SO 上寻找其他相关主题,但只找到了类似的问题,但没有任何帮助。

我正在查询 AlphaVantage 以获取股票数据。我收到了数据并进行了解码,但由于格式问题,我目前无法转换为 Pandas 数据帧。回复格式如下:

{
    "Meta Data": {
        "1. information": "Daily Prices (open,high,low,close) and Volumes","2. Symbol": "AAPL","3. Last Refreshed": "2021-04-26","4. Output Size": "Full size","5. Time Zone": "US/Eastern"
    },"Time Series (Daily)": {
        "2021-04-26": {
            "1. open": "134.8300","2. high": "135.0600","3. low": "133.5600","4. close": "134.7200","5. volume": "66905069"
        },"2021-04-23": {
            "1. open": "132.1600","2. high": "135.1200","3. low": "132.1600","4. close": "134.3200","5. volume": "78756779"
        },"2021-04-22": {
            "1. open": "133.0400","2. high": "134.1500","3. low": "131.4100","4. close": "131.9400","5. volume": "84566456"
        },

运行以下代码后:

import requests as rq
import json

base_url = "https://www.alphavantage.co/query?"
params = {"function":function,"symbol":symbol,"outputsize":output_size,"datatype":data_type,"apikey":api_key}

response = rq.get(base_url,params=params)
data_str = data_bytes.decode("utf-8")

尝试将数据加载到数据框时出现问题:

data_dict = json.loads(data_str)
df = pd.DataFrame(data_dict.items())
df.head()

返回:

    0   1
0   Meta Data   {'1. information': 'Daily Prices (open,...
1   Time Series (Daily)     {'2021-04-26': {'1. open': '134.8300','2. hig...

还有……

data_dict = json.loads(data_str)
df = pd.DataFrame(data_dict)
df.head()

返回:

    Meta Data   Time Series (Daily)
1. information  Daily Prices (open,close) and Volumes   NaN
2. Symbol   AAPL    NaN
3. Last Refreshed   2021-04-26  NaN
4. Output Size  Full size   NaN
5. Time Zone    US/Eastern  NaN

两者都不可用。我在寻找表单的数据框:

date   open   high   low   close   volume

有没有办法让响应变成这种格式?

解决方法

因为您只需要 Time Series (Daily) 值。这样你在创建dataframe的时候就可以直接使用

data_dict = json.loads(data_str)
df = pd.DataFrame(data_dict["Time Series (Daily)"])
df = df.T  # Transpose Dataframe for desired results

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...