繁体   English   中英

使用Pandas从URL读取嵌套的JSON

[英]Read nested JSON from an URL with Pandas

我知道也有类似的问题,但是似乎没有一个问题可以帮助我。 我正在尝试仅使用“数据”中的信息创建一个DataFrame

我的JSON文件如下所示(完整文件)

{
"data": [
    {
    "ID Education Level": 1,
    "Education Level": "Enseñanza Básica",
    "ID Year": 2017,
    "Year": "2017",
    "ID Region": 8,
    "Region": "Biobío",
    "ID Comuna": 298,
    "Comuna": "San Pedro De La Paz",
    "Abandonment Percentage": 0.006858621805241022
    },
    {
    "ID Education Level": 2,
    "Education Level": "Enseñanza Media",
    "ID Year": 2017,
    "Year": "2017",
    "ID Region": 8,
    "Region": "Biobío",
    "ID Comuna": 298,
    "Comuna": "San Pedro De La Paz",
    "Abandonment Percentage": 0.01564914992272025
    },
    {
    "ID Education Level": 1,
    "Education Level": "Enseñanza Básica",
    "ID Year": 2016,
    "Year": "2016",
    "ID Region": 8,
    "Region": "Biobío",
    "ID Comuna": 298,
    "Comuna": "San Pedro De La Paz",
    "Abandonment Percentage": 0.006825490582135591
    }
],
"source": [
    {
    "measures": [
        "Abandonment Percentage"
    ],
    "annotations": {
        "source_name": "Creciendo con Derechos - Ministerior de Desarrollo Social",
        "source_description": "Sistema de indicadores para el seguimiento de los derechos de niños, niñas y adolescentes, en relación a sus condiciones de vida y en sintonía con la Convención sobre los Derechos del Niño.",
        "source_link": "http://www.creciendoconderechos.gob.cl/indicadores",
        "dataset_name": "mds_abandonment_rate",
        "dataset_link": "https://github.com/datachile/datachile-etl/tree/master/childhood/mds_abandonment_rate",
        "topic": "childhood",
        "subtopic": "abandonment_rate",
        "available_dimensions": "",
        "available_measures": ""
    },
    "name": "mds_abandonment_rate",
    "substitutions": []
    }
]
}

这就是我想要完成的DataFrame。

预期的数据框结果

我已经阅读了read_json文档,并看到了一些解决方案,这些解决方案可能对我尝试执行的操作来说太复杂了。 另外,我还需要使用类似于JSON的网址数组,因此手动操作并不是一种选择。

感谢您的任何答复,第一次来这里请原谅我可怜的英语。

这是在图像中生成所需输出的代码

import pandas as pd
import json
with open('data.json') as json_file:
data = json.load(json_file)

df = pd.DataFrame(data['data'])
df.to_csv("output4_9.csv", encoding='utf-8', index='false')

csv包含它的输出。

以下是将url转换为.json文件的代码:urllib.request import urlopen import json导入请求

    url = "https://es.datachile.io/api/data?measures=Abandonment%20Percentage&drilldowns=Education%20Level,Year&parents=true&Comuna=298"
    response = urlopen(url)
    data = json.loads(response.read())

    with open('data1.json', 'w') as fw:
        json.dump(data, fw)

如果您想从某些url读取json,则从请求库读取url并将其解析为json到变量'data'

import requests
link = 'https://es.datachile.io/api/data?measures=Abandonment%20Percentage&drilldowns=Education%20Level,Year&parents=true&Comuna=298'
resp = requests.get(url=link)
if resp.status_code == 200:
    data = resp.json()

解决方案的其余部分已在上面提到。 我希望这有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM