Python 将数据从JSON转换为dataframe

Python 将数据从JSON转换为dataframe,python,pandas,Python,Pandas,我想从下面一行文本中提取一些数据。感兴趣的数据是:'exchange\u symbol在market\u-pair\u-base和'market\u-pair\u-quote下,所有exchange\u下的数据都报告了。 任何帮助都会很好 {'status': {'timestamp': '2019-10-04T02:57:39.238Z', 'error_code': 0, 'error_message': None, 'elapsed': 14, 'credit_count': 1, 'no

我想从下面一行文本中提取一些数据。感兴趣的数据是:
'exchange\u symbol
market\u-pair\u-base
'market\u-pair\u-quote
下,所有
exchange\u下的数据都报告了
。 任何帮助都会很好

{'status': {'timestamp': '2019-10-04T02:57:39.238Z', 'error_code': 0, 'error_message': None, 'elapsed': 14, 'credit_count': 1, 'notice': None}, 'data': {'id': 112, 'name': 'Liquid', 'slug': 'liquid', 'num_market_pairs': 190, 'market_pairs': [{'market_pair_base': {'exchange_symbol': 'ETH', 'currency_id': 1027, 'currency_symbol': 'ETH', 'currency_type': 'cryptocurrency'}, 'market_pair_quote': {'exchange_symbol': 'JPY', 'currency_id': 2797, 'currency_symbol': 'JPY', 'currency_type': 'fiat'}, 'quote': {'exchange_reported': {'price': 18522.8757, 'volume_24h_base': 12901.4143123, 'volume_24h_quote': 238971293.660934, 'last_updated': '2019-10-04T02:57:04.000Z'}, 'USD': {'price': 173.503768779353, 'volume_24h': 2238444.00576794, 'last_updated': '2019-10-04T02:57:04.000Z'}}, 'market_id': 4431, 'market_pair': 'ETH/JPY', 'category': 'spot', 'fee_type': 'percentage'}, {'market_pair_base': {'exchange_symbol': 'XRP', 'currency_id': 52, 'currency_symbol': 'XRP', 'currency_type': 'cryptocurrency'}, 'market_pair_quote': {'exchange_symbol': 'JPY', 'currency_id': 2797, 'currency_symbol': 'JPY', 'currency_type': 'fiat'}, 'quote': {'exchange_reported': {'price': 26.55199, 'volume_24h_base': 8223150.63965144, 'volume_24h_quote': 218341013.552519, 'last_updated': '2019-10-04T02:56:04.000Z'}, 'USD': {'price': 0.248712479001935, 'volume_24h': 2045200.18079406, 'last_updated': '2019-10-04T02:56:04.000Z'}}, 'market_id': 16254, 'market_pair': 'XRP/JPY', 'category': 'spot', 'fee_type': 'percentage'}]}}
我尝试了以下代码,但这发送了一个错误:

    File "proc_manual_comp.py", line 112, in <module>
     for item in data['data'][currency]['market_pairs']
  TypeError: 'int' object is not subscriptable
预期产出:

market_pair_base  market_pair_quoted   last_updated             price
ETH               JPY                  2019-10-04T02:57:04.000Z 18522.8757

你的for循环似乎有问题

for currency in  data['data']:
这里,由于数据['data']是一个dict,因此货币值将成为dict的键,另一种方法可以是这样的

for market_pairs in data['data']['market_pairs']:
    used_list = [market_pair['market_pair_base'] for market_pair in market_pairs]
    price = pd.DataFrame.from_records(used_list)

这是基于这样一个事实,即您希望将所有
market\u pair\u base
放在一个数据帧中

假设JSON是
d
变量中给出的

请尝试以下代码段:

target_df=pd.DataFrame(columns=['market_pair_base','market_pair_quote','price','last_updated'])
target=dict()

usedlist=d['data']['market_pairs']

for i in range(len(usedlist)):
    target['market_pair_base']=[usedlist[i]['market_pair_base']['exchange_symbol']]
    target['market_pair_quote'] = [usedlist[i]['market_pair_quote']['exchange_symbol']]
    target['price'] = [usedlist[i]['quote']['exchange_reported']['price']]
    target['last_updated'] = [usedlist[i]['quote']['exchange_reported']['last_updated']]
    target_df=pd.concat([target_df, pd.DataFrame(target)], ignore_index=True)
打印(目标_df)
将提供如下所示的所需输出:

market_pair_base market_pair_quote        price              last_updated
0              ETH               JPY  18522.87570  2019-10-04T02:57:04.000Z
1              XRP               JPY     26.55199  2019-10-04T02:56:04.000Z
market_pair_base market_pair_quote        price              last_updated
0              ETH               JPY  18522.87570  2019-10-04T02:57:04.000Z
1              XRP               JPY     26.55199  2019-10-04T02:56:04.000Z