json到数据框的转换/ Python

Posted

技术标签:

【中文标题】json到数据框的转换/ Python【英文标题】:json to dataframe conversion / Python 【发布时间】:2020-10-13 09:23:24 【问题描述】:

我刚刚导入了一个 API 来获取台币 (TWD) 与其他货币的汇率。 所以我用这段代码导入它:

import requests
r=requests.get('http://api.cambio.today/v1/full/TWD/json?key=X')
dico = r.json()

它给了我:

'result': 'from': 'TWD',
  'conversion': ['to': 'AED',
    'date': '2020-06-23T07:23:49',
    'rate': 0.124169,
   'to': 'AFN', 'date': '2020-06-23T07:19:53', 'rate': 2.606579,
   'to': 'ALL', 'date': '2020-06-19T20:48:10', 'rate': 3.74252,
   'to': 'AMD', 'date': '2020-06-22T12:00:19', 'rate': 16.176679,
   'to': 'AOA', 'date': '2020-06-22T12:32:59', 'rate': 20.160418,
   'to': 'ARS', 'date': '2020-06-23T08:00:01', 'rate': 2.363501
  ]

为了把它变成一个数据框,我尝试了两件事:

df = pd.DataFrame(dico.get('result', ))

from pandas.io.json import json_normalize
dictr = r.json()
df = json_normalize(dictr)

在这两种情况下,我都会得到一个“转换”列,每种货币一行。例如第一行是:“'to': 'AFN', 'date': '2020-06-23T07:19:53', 'rate': 2.606579”。 虽然我想要一列货币和一列汇率。

有人可以帮帮我吗?

【问题讨论】:

能否请您粘贴有效的 json。我很确定这里有错别字 【参考方案1】:

您粘贴的 json 不是有效的 json。但是我猜json的格式应该是这个

'result': 'from': 'TWD',
  'conversion': ['to': 'AED',
    'date': '2020-06-23T07:23:49',
    'rate': 0.124169,
   'to': 'AFN', 'date': '2020-06-23T07:19:53', 'rate': 2.606579,
   'to': 'ALL', 'date': '2020-06-19T20:48:10', 'rate': 3.74252,
   'to': 'AMD', 'date': '2020-06-22T12:00:19', 'rate': 16.176679,
   'to': 'AOA', 'date': '2020-06-22T12:32:59', 'rate': 20.160418,
   'to': 'ARS', 'date': '2020-06-23T08:00:01', 'rate': 2.363501]

在这种情况下,您可以创建您想要使用的数据框

df = pd.DataFrame(dico.get('result', ).get('conversion', ))

【讨论】:

【参考方案2】:

您需要使用转换率列表获取 "conversion" 属性值,使用此:

df = pd.DataFrame(dico["result"]["conversion"])

它将像这样格式化您的转换数据:

    to  date                rate
0   AED 2020-06-23T07:23:49 0.124169
1   AFN 2020-06-23T07:19:53 2.606579
2   ALL 2020-06-19T20:48:10 3.742520
3   AMD 2020-06-22T12:00:19 16.176679
4   AOA 2020-06-22T12:32:59 20.160418
5   ARS 2020-06-23T08:00:01 2.363501

【讨论】:

以上是关于json到数据框的转换/ Python的主要内容,如果未能解决你的问题,请参考以下文章

Python - 到 Pandas 数据框的 Json 列表

我将如何将数据框的一部分转换为 json 对象 [重复]

PythonPython 和 JSON 数据的相互转化

PythonPython 和 JSON 数据的相互转化

PythonPython 和 JSON 数据的相互转化

PythonPython 和 JSON 数据的相互转化