【发布时间】:2020-01-03 12:26:20
【问题描述】:
我知道这个问题已被问过很多次,但我似乎无法对我的问题应用任何解决方案。
查询:
import urllib, json
url = 'https://api.carbonintensity.org.uk/regional'
params = 'Accept: application/json'
r = requests.get(url = url, params = params)
data = r.json()
print(data)
输出:
{'data': [{'from': '2019-08-30T08:00Z', 'to': '2019-08-30T08:30Z', 'regions': [{'regionid': 1, 'dnoregion': '苏格兰水电 Power Distribution', 'shortname': 'North Scotland', 'intensity': {'forecast': 32, 'index': 'very low'}, 'generationmix': [{'fuel': '生物质','perc':0},{'fuel':'煤','perc':0},{'fuel': 'imports', 'perc': 0}, {'fuel': 'gas', 'perc': 8.3}, {'fuel': '核', 'perc': 0}, {'fuel': '其他', 'perc': 0}, {'fuel': 'hydro', 'perc': 12.8}, {'fuel': 'solar', 'perc': 0}, {'fuel': 'wind', 'perc': 78.9}]}, {'regionid': 2, 'dnoregion': 'SP Distribution', 'shortname': 'South Scotland', 'intensity': {'forecast': 14, 'index': 'very low'} , 'generationmix': [{'fuel': 'biomass', 'perc': 1.6}, {'fuel': 'coal', 'perc': 0}, {'fuel': 'imports', 'perc': 1.9}, {'fuel': 'gas', 'perc': 1.1}, {'fuel': 'nuclear', 'perc': 31.9}, {'fuel': 'other', 'perc': 0}, {'fuel': 'hydro', 'perc': 0.2} ,{'燃料':'太阳能','perc':0.5}, {'fuel': 'wind', 'perc': 62.8}]}, {'regionid': 3, 'dnoregion': '电力西北','简称':'西北英格兰', '强度':{'预测':53,'指数':'非常低'},'generationmix': [{'fuel': '生物质', 'perc': 0}, {'fuel': '煤', 'perc': 0}, {'fuel': 'imports', 'perc': 0}, {'fuel': 'gas', 'perc': 13.3}, {'fuel': '核','perc':49.4},{'fuel':'其他','perc':0},{'fuel': 'hydro', 'perc': 0}, {'fuel': 'solar', 'perc': 0.3}, {'fuel': 'wind', 'perc': 37}]}, {'regionid': 4, 'dnoregion': 'NPG North East', 'shortname': 'North East England', 'intensity': {'forecast': 25, 'index': 'very low'}, 'generationmix': [{'fuel': 'biomass', 'perc': 20.8}, {'fuel': 'coal', 'perc': 0}, {'fuel': 'imports', 'perc': 0}, {'fuel': 'gas', 'perc': 0} ,{'燃料':'核','perc':71.3}, {'fuel': '其他', 'perc': 0}, {'fuel': 'hydro', 'perc': 0}, {'fuel': 'solar', 'perc': 1.3}, {'fuel': 'wind', 'perc': 6.6}]}, {'regionid': 5, 'dnoregion': 'NPG Yorkshire', 'shortname': 'Yorkshire', '强度':{'预测':235,'指数':'中等'},'generationmix': [{'fuel': '生物质', 'perc': 39.3}, {'fuel': '煤', 'perc': 0}, {'fuel': '进口', 'perc': 0}, {'fuel': 'gas', 'perc': 47.9}, {'fuel': '核', 'perc': 0}, {'fuel': '其他', 'perc': 0}, {'fuel': 'hydro', 'perc': 0}, {'fuel': 'solar', 'perc': 1.1}, {'fuel': 'wind', 'perc': 11.7}]}, {'regionid': 6, 'dnoregion': 'SP Manweb', 'shortname': '北威尔士和默西塞德郡', 'intensity': {'forecast': 257, 'index': '中等'}, 'generationmix': [{'fuel': 'biomass', 'perc': 0}, {'fuel': 'coal', 'perc': 6}, {'fuel': 'imports', 'perc': 27}, {'fuel': 'gas', 'perc': 20.3}, {'fuel': 'nuclear', 'perc': 0}, {'fuel': '其他', 'perc': 0}, {'fuel': 'hydro', 'perc': 2}, {'fuel': 'solar', 'perc': 2.7}, {'fuel': 'wind', 'perc': 42}]}, {'regionid': 7, 'dnoregion': 'WPD 南威尔士', 'shortname': '南威尔士', '强度':{'预测':282,'指数':'高'},'generationmix': [{'fuel': '生物质', 'perc': 0}, {'fuel': '煤', 'perc': 0.1}, {'fuel': '进口', 'perc': 0}, {'fuel': 'gas', 'perc': 71.1}, {'fuel': '核', 'perc': 0}, {'fuel': '其他', 'perc': 0}, {'fuel': 'hydro', 'perc': 0}, {'fuel': 'solar', 'perc': 6}, {'fuel': 'wind', 'perc': 22.8}]}, {'regionid': 8, 'dnoregion': 'WPD West Midlands', 'shortname': 'West Midlands', 'intensity': {'forecast': 57, 'index': '非常低'}, 'generationmix': [{'fuel': 'biomass', 'perc': 1}, {'fuel': '煤', 'perc': 0.4}, {'fuel': '进口', 'perc': 2.5}, {'fuel': 'gas', 'perc': 10}, {'fuel': 'nuclear', 'perc': 28.2}, {'fuel': 'other', 'perc': 0}, {'fuel': 'hydro', 'perc': 2.8}, {'fuel': 'solar', 'perc': 2.2}, {'fuel': 'wind', 'perc': 52.9}]}, {'regionid': 9, 'dnoregion': 'WPD 东米德兰兹', 'shortname': '东米德兰兹', '强度':{'预测':340,'指数':'高'},'generationmix': [{'fuel': '生物质', 'perc': 0}, {'fuel': '煤', 'perc': 14.2}, {'fuel': '进口', 'perc': 0}, {'fuel': 'gas', 'perc': 54}, {'fuel': '核', 'perc': 0}, {'fuel': '其他', 'perc': 0}, {'fuel': 'hydro', 'perc': 0}, {'fuel': '太阳能', 'perc': 8}, {'fuel': '风', 'perc': 23.8}]}, {'regionid': 10, 'dnoregion': 'UKPN East', 'shortname': 'East England', 'intensity': {'forecast': 125, 'index': 'low'}, 'generationmix': [{'fuel': 'biomass', 'perc': 0}, {'fuel': 'coal', 'perc': 0}, {'fuel': '进口', 'perc': 0}, {'fuel': 'gas', 'perc': 31.9}, {'fuel': 'nuclear', 'perc': 30.9}, {'fuel': 'other', 'perc': 0}, {'fuel': 'hydro', 'perc': 0} ,{'燃料':'太阳能','perc':12.9}, {'fuel': 'wind', 'perc': 24.3}]}, {'regionid': 11, 'dnoregion': 'WPD South West', 'shortname': 'South West England', 'intensity': {'forecast': 29, 'index': 'very low'}, 'generationmix': [{'fuel': '生物质','perc':0},{'fuel':'煤','perc':0},{'fuel': 'imports', 'perc': 0}, {'fuel': 'gas', 'perc': 7.6}, {'fuel': '核','perc':64},{'fuel':'其他','perc':0},{'fuel': 'hydro', 'perc': 0}, {'fuel': 'solar', 'perc': 25.3}, {'fuel': 'wind', 'perc': 3.1}]}, {'regionid': 12, 'dnoregion': 'SSE South', 'shortname': 'South England', 'intensity': {'forecast': 175, 'index': 'moderate'}, 'generationmix': [{'fuel': 'biomass', 'perc': 5}, {'fuel': '煤', 'perc': 0.4}, {'fuel': '进口', 'perc': 0.8}, {'fuel': 'gas', 'perc': 40.9}, {'fuel': 'nuclear', 'perc': 17.3}, {'fuel': '其他', 'perc': 0}, {'fuel': 'hydro', 'perc': 1.1}, {'fuel': 'solar', 'perc': 11.7}, {'fuel': 'wind', 'perc': 22.8}]}, {'regionid': 13,'dnoregion':'UKPN London','shortname':'London','intensity': {'forecast': 124, 'index': 'low'}, 'generationmix': [{'fuel': '生物质','perc':13.8},{'fuel':'煤','perc':0.8},{'fuel': 'imports', 'perc': 0.8}, {'fuel': 'gas', 'perc': 24.2}, {'fuel': '核','perc':22.4},{'fuel':'其他','perc':0},{'fuel': 'hydro', 'perc': 1.5}, {'fuel': '太阳能', 'perc': 3.7}, {'fuel': 'wind', 'perc': 32.8}]}, {'regionid': 14, 'dnoregion': 'UKPN South East', 'shortname': 'South East England', 'intensity': {'forecast': 213, 'index': '中等'}, 'generationmix': [{'fuel': 'biomass', 'perc': 3.1}, {'fuel': '煤', 'perc': 0.2}, {'fuel': '进口', 'perc': 20.1}, {'fuel': 'gas', 'perc': 48.7}, {'fuel': 'nuclear', 'perc': 5.6}, {'fuel': 'other', 'perc': 0}, {'fuel': 'hydro', 'perc': 1.6}, {'fuel': 'solar', 'perc': 7.6}, {'fuel': 'wind', 'perc': 13.1}]}, {'regionid': 15, 'dnoregion': 'England ', 'shortname': 'England', 'intensity': {'forecast': 160, 'index': 'moderate'}, 'generationmix': [{'fuel': 'biomass', 'perc': 9.2}, {'fuel': 'coal', 'perc': 2.3}, {'fuel': '进口', 'perc': 2.4}, {'fuel': 'gas', “perc”:31.5},{“燃料”:“核”,“perc”:23.1},{“燃料”:“其他”, 'perc': 0}, {'fuel': 'hydro', 'perc': 0.6}, {'fuel': 'solar', 'perc': 6.8}, {'fuel': 'wind', 'perc': 24.1}]}, {'regionid': 16, 'dnoregion': 'Scotland', 'shortname': 'Scotland', 'intensity': {'预测':23, 'index': 'very low'}, 'generationmix': [{'fuel': 'biomass', 'perc': 1.1}, {'fuel': 'coal', 'perc': 0}, {'fuel': 'imports', 'perc': 1.3}, {'fuel': 'gas', 'perc': 3.9} ,{'燃料':'核','perc':21.9}, {'fuel': '其他', 'perc': 0}, {'fuel': 'hydro', 'perc': 4.4}, {'fuel': 'solar', 'perc': 0.4}, {'fuel': 'wind', 'perc': 67}]}, {'regionid': 17、'dnoregion':'威尔士','shortname':'威尔士','强度': {'forecast': 227, 'index': 'moderate'}, 'generationmix': [{'fuel': '生物质','perc':0},{'fuel':'煤','perc':0},{'fuel': '进口','perc':20.6},{'fuel':'gas','perc':33.9},{'fuel': '核', 'perc': 0}, {'fuel': '其他', 'perc': 0}, {'fuel': 'hydro', 'perc': 1.5}, {'fuel': '太阳能', 'perc': 3.3}, {'fuel': '风', 'perc': 40.7}]}, {'regionid': 18, 'dnoregion': 'GB', 'shortname': 'GB', 'intensity': {'forecast': 146, 'index': 'low'}, 'generationmix ': [{'fuel': '生物质', 'perc': 7.5}, {'fuel': '煤', 'perc': 2.8}, {'fuel': '进口', 'perc': 6.4}, {'fuel': 'gas', 'perc': 23.7}, {'fuel':'核','perc':20.5},{'fuel':'其他','perc':0.3}, {'fuel': 'hydro', 'perc': 1.1}, {'fuel': 'solar', 'perc': 7.5}, {'fuel': 'wind', 'perc': 30.2}]}]}]}
我需要将此输出拆分为 DataFrame 中的列,我已经尝试了一些方法,但我对解析 JSON 缺乏经验,并且肯定需要帮助!我试过了:
json_normalize(data)
只返回包含所有数据的单行。
pd.io.json.json_normalize(data['data'])
返回 3 列('from'、'regions'、'to')而不解压整个 json。
【问题讨论】:
标签: python json pandas python-requests