从不均匀的字典列表创建 Pandas DataFrame
Creating a Pandas DataFrame from Uneven List of Dictionaries
我正在尝试将字典放入格式化的 DataFrame 中。
我正在通过来自 https://www.cryptonator.com/api
的 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
你可以拉出你需要的碎片
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
我正在尝试将字典放入格式化的 DataFrame 中。
我正在通过来自 https://www.cryptonator.com/api
的 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
你可以拉出你需要的碎片
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