将嵌套的 JSON 字典读入 pandas 数据框(硬币市值 API)
Read nested JSON dictionaries into pandas dataframe (Coin Market Cap API)
我正在尝试从 python 的代币市值 api 中获取“稳定币”列表。我能够检索包含数据的 json 文件,但我在提取所需信息时遇到了很多麻烦。 json 文件如下:
{'status': {'timestamp': '2022-05-24T15:27:33.221Z', 'error_code': 0, 'error_message': None, 'elapsed': 25, 'credit_count': 2, 'notice': None}, 'data': {'id': '604f2753ebccdd50cd175fc1', 'name': 'Stablecoin', 'title': 'Stablecoin', 'description': 'Stablecoin', 'num_tokens': 99, 'last_updated': '2021-11-10T11:25:48.501Z', 'avg_price_change': -0.9522605162637363, 'market_cap': 159395366765.37, 'market_cap_change': -0.5842274725274725, 'volume': 69946658004.58846, 'volume_change': 89.59030769230768, 'coins': [{'id': 825, 'name': 'Tether', 'symbol': 'USDT'
我唯一需要的信息就是名字。
我的代码:
import pandas as pd
import json
url = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/category'
parameters = {
'id': '604f2753ebccdd50cd175fc1',
'start': '1',
'limit': '10',
'convert': 'USD'
}
headers = {
'Accepts': 'application/json',
'X-CMC_PRO_API_KEY': API_KEY,
}
resp = requests.get(url, params=parameters, headers=headers)
jsondata = json.loads(resp.text)
print(jsondata)
CoinDF = pd.json_normalize(jsondata['data']['coins'])
print(CoinDF)
感谢任何帮助!
json 被剪掉了一些 }
和 ]
,我添加了这些以获得预期的结果:
data = {'status':
{'timestamp': '2022-05-24T15:27:33.221Z', 'error_code': 0, 'error_message': None, 'elapsed': 25, 'credit_count': 2, 'notice': None},
'data': {'id': '604f2753ebccdd50cd175fc1', 'name': 'Stablecoin', 'title': 'Stablecoin', 'description': 'Stablecoin', 'num_tokens': 99, 'last_updated': '2021-11-10T11:25:48.501Z', 'avg_price_change': -0.9522605162637363, 'market_cap': 159395366765.37, 'market_cap_change': -0.5842274725274725, 'volume': 69946658004.58846, 'volume_change': 89.59030769230768, 'coins': [{'id': 825, 'name': 'Tether', 'symbol': 'USDT'}]}}
正如@LMD 在他的评论中所说,您可以像这样使用 data
作为 dict
:
>>> data['data']['coins'][0]['name']
'Tether'
我正在尝试从 python 的代币市值 api 中获取“稳定币”列表。我能够检索包含数据的 json 文件,但我在提取所需信息时遇到了很多麻烦。 json 文件如下:
{'status': {'timestamp': '2022-05-24T15:27:33.221Z', 'error_code': 0, 'error_message': None, 'elapsed': 25, 'credit_count': 2, 'notice': None}, 'data': {'id': '604f2753ebccdd50cd175fc1', 'name': 'Stablecoin', 'title': 'Stablecoin', 'description': 'Stablecoin', 'num_tokens': 99, 'last_updated': '2021-11-10T11:25:48.501Z', 'avg_price_change': -0.9522605162637363, 'market_cap': 159395366765.37, 'market_cap_change': -0.5842274725274725, 'volume': 69946658004.58846, 'volume_change': 89.59030769230768, 'coins': [{'id': 825, 'name': 'Tether', 'symbol': 'USDT'
我唯一需要的信息就是名字。 我的代码:
import pandas as pd
import json
url = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/category'
parameters = {
'id': '604f2753ebccdd50cd175fc1',
'start': '1',
'limit': '10',
'convert': 'USD'
}
headers = {
'Accepts': 'application/json',
'X-CMC_PRO_API_KEY': API_KEY,
}
resp = requests.get(url, params=parameters, headers=headers)
jsondata = json.loads(resp.text)
print(jsondata)
CoinDF = pd.json_normalize(jsondata['data']['coins'])
print(CoinDF)
感谢任何帮助!
json 被剪掉了一些 }
和 ]
,我添加了这些以获得预期的结果:
data = {'status':
{'timestamp': '2022-05-24T15:27:33.221Z', 'error_code': 0, 'error_message': None, 'elapsed': 25, 'credit_count': 2, 'notice': None},
'data': {'id': '604f2753ebccdd50cd175fc1', 'name': 'Stablecoin', 'title': 'Stablecoin', 'description': 'Stablecoin', 'num_tokens': 99, 'last_updated': '2021-11-10T11:25:48.501Z', 'avg_price_change': -0.9522605162637363, 'market_cap': 159395366765.37, 'market_cap_change': -0.5842274725274725, 'volume': 69946658004.58846, 'volume_change': 89.59030769230768, 'coins': [{'id': 825, 'name': 'Tether', 'symbol': 'USDT'}]}}
正如@LMD 在他的评论中所说,您可以像这样使用 data
作为 dict
:
>>> data['data']['coins'][0]['name']
'Tether'