从不均匀的词典列表创建Pandas DataFrame

时间:2017-05-04 20:02:46

标签: python-3.x pandas dictionary dataframe key-value

我正在尝试将字典放入格式化的DataFrame中。

我通过以下方式通过API调用获取数据:https://www.cryptonator.com/api

r = requests.get('https://api.cryptonator.com/api/ticker/btc-usd')
x = r.json()

返回的数据格式为:

{"ticker":{"base":"BTC","target":"USD","price":"443.7807865468","volume":"31720.1493969300","change":"0.3766203596"},
"timestamp":1399490941,
"success":true,
"error":""
}

我只对词典“ticker”中的一些数据和键值对“timestamp”感兴趣。

我的问题是,因为“ticker”是字典中的字典,而“timestamp”只是一个键值对,我似乎无法将它们导入到这个特定的Pandas DataFrame中:

  base           price   timestamp            volume
0  BTC  443.7807865468  1399490941  31720.1493969300

我尝试了几种方法并不能完全满足我的要求,包括:

pd.DataFrame(x).T 
                 base       change          price      target          volume
ticker            BTC  -8.71469546  1532.83742332         USD  22275.83826859
timestamp  1493925662   1493925662     1493925662  1493925662      1493925662

1 个答案:

答案 0 :(得分:2)

你可以拉出你需要的东西

pd.DataFrame({
        'ticker': x['ticker'],
        'timestamp': x['timestamp']
    }).T

                 base        change           price      target            volume
ticker            BTC  0.3766203596  443.7807865468         USD  31720.1493969300
timestamp  1399490941    1399490941      1399490941  1399490941        1399490941

旧答案

pd.io.json.json_normalize(x)

  error success ticker.base ticker.change    ticker.price ticker.target     ticker.volume   timestamp
0          True         BTC  0.3766203596  443.7807865468           USD  31720.1493969300  1399490941