【问题标题】:json to dataframe conversion / Pythonjson到数据框的转换/ Python
【发布时间】:2023-03-27 15:37:01
【问题描述】:

我刚刚导入了一个 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。我很确定这里有错别字

标签: python json pandas api


【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2019-09-12
      • 2017-10-31
      • 1970-01-01
      • 2020-05-29
      • 2020-12-02
      • 2018-11-20
      • 1970-01-01
      • 2021-09-27
      • 1970-01-01
      相关资源
      最近更新 更多