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的主要内容,如果未能解决你的问题,请参考以下文章