Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中将JSON post请求转换为数据帧_Python_Json_Dataframe - Fatal编程技术网

如何在Python中将JSON post请求转换为数据帧

如何在Python中将JSON post请求转换为数据帧,python,json,dataframe,Python,Json,Dataframe,我对蟒蛇和熊猫还不熟悉,但我想做一些关于瑞典人口的真实统计,这是一个有趣的项目。要检索此SCB(瑞典统计数据库),请使用API。我已经用下面的代码访问了一些数据,但我仍然不知道如何将响应转换为数据帧 下面是我的代码: import json import requests import urllib.request import pandas as pd #API Settings url="http://api.scb.se/OV0104/v1/doris/sv/ssd/" amnesid=

我对蟒蛇和熊猫还不熟悉,但我想做一些关于瑞典人口的真实统计,这是一个有趣的项目。要检索此SCB(瑞典统计数据库),请使用API。我已经用下面的代码访问了一些数据,但我仍然不知道如何将响应转换为数据帧

下面是我的代码:

import json
import requests
import urllib.request
import pandas as pd

#API Settings
url="http://api.scb.se/OV0104/v1/doris/sv/ssd/"
amnesid="BE/"
level1="BE0101/"
level2="BE0101A/"
level3="BefolkningNy/"
urlPost= url + amnesid + level1 +level2 +level3

#Post Request
url = urlPost
payload = {
"query": [{"code":"Region", "selection":{"filter":"item",
"values":["00"]}}],
"response": {"format":"json"}
}


r = requests.post(url, data=json.dumps(payload))
print(r.text)
以下是控制台输出:

{"columns":[{"code":"Region","text":"region","type":"d"}, 
{"code":"Tid","text":"år","type":"t"}, 
{"code":"BE0101N1","text":"Folkmängd","comment":"Uppgifterna avser 
förhållandena den 31 december för valt/valda år enligt den regionala 
indelning som gäller den 1 januari året efter.\r\n","type":"c"}, 
{"code":"BE0101N2","text":"Folkökning","comment":"Folkökningen definieras 
som 
skillnaden mellan folkmängden vid årets början och årets 
slut.\r\n","type":"c"}],"comments":[],"data":[{"key":["00","1968"],"values": 
["7931193",".."]},{"key":["00","1969"],"values":["8004270","73077"]},{"key": 
["00","1970"],"values":["8081142","76872"]},{"key":["00","1971"],"values": 
["8115165","34023"]},{"key":["00","1972"],"values":["8129129","13964"]}, 
{"key":["00","1973"],"values":["8144428","15299"]},{"key": 
["00","1974"],"values":["8176691","32263"]},{"key":["00","1975"],"values": 
["8208442","31751"]},{"key":["00","1976"],"values":["8236179","27737"]}, 
{"key":["00","1977"],"values":["8267116","30937"]},{"key": 
["00","1978"],"values":["8284437","17321"]},{"key":["00","1979"],"values": 
["8303010","18573"]},{"key":["00","1980"],"values":["8317937","14927"]}, 
{"key":["00","1981"],"values":["8323033","5096"]},{"key": 
["00","1982"],"values":["8327484","4451"]},{"key":["00","1983"],"values": 
["8330573","3089"]},{"key":["00","1984"],"values":["8342621","12048"]}, 
{"key":["00","1985"],"values":["8358139","15518"]},{"key": 
["00","1986"],"values":["8381515","23376"]},{"key":["00","1987"],"values": 
["8414083","32568"]},{"key":["00","1988"],"values":["8458888","44805"]}, 
{"key":["00","1989"],"values":["8527036","68148"]},{"key": 
["00","1990"],"values":["8590630","63594"]},{"key":["00","1991"],"values": 
["8644119","53489"]},{"key":["00","1992"],"values":["8692013","47894"]}, 
{"key":["00","1993"],"values":["8745109","53096"]},{"key": 
["00","1994"],"values":["8816381","71272"]},{"key":["00","1995"],"values": 
["8837496","21115"]},{"key":["00","1996"],"values":["8844499","7003"]}, 
{"key":["00","1997"],"values":["8847625","3126"]},{"key": 
["00","1998"],"values":["8854322","6697"]},{"key":["00","1999"],"values": 
["8861426","7104"]},{"key":["00","2000"],"values":["8882792","21366"]}, 
{"key":["00","2001"],"values":["8909128","26336"]},{"key": 
["00","2002"],"values":["8940788","31660"]},{"key":["00","2003"],"values": 
["8975670","34882"]},{"key":["00","2004"],"values":["9011392","35722"]}, 
{"key":["00","2005"],"values":["9047752","36360"]},{"key": 
["00","2006"],"values":["9113257","65505"]},{"key":["00","2007"],"values": 
["9182927","69670"]},{"key":["00","2008"],"values":["9256347","73420"]}, 
{"key":["00","2009"],"values":["9340682","84335"]},{"key": 
["00","2010"],"values":["9415570","74888"]},{"key":["00","2011"],"values": 
["9482855","67285"]},{"key":["00","2012"],"values":["9555893","73038"]}, 
{"key":["00","2013"],"values":["9644864","88971"]},{"key": 
["00","2014"],"values":["9747355","102491"]},{"key":["00","2015"],"values": 
["9851017","103662"]},{"key":["00","2016"],"values":["9995153","144136"]}, 
{"key":["00","2017"],"values":["10120242","125089"]}]}

如果有人能帮助我,我将不胜感激。

在评论中讨论后,答案是:

df = pd.DataFrame(json.loads(codecs.decode(bytes(r.text, 'utf-8'), 'utf-8-sig'))['data'])

这是你想要的吗
df=pd.DataFrame(r.json()['data'])
Yes正确,我想要包含年份和人口数量的数据。我尝试使用您的代码并打印,但出现了以下错误:json.decoder.JSONDecodeError:意外的UTF-8 BOM(使用UTF-8-sig解码):第1行第1列(char 0)尝试以下操作:
df=pd.DataFrame(json.loads(codecs.decode(bytes)(r.text,'UTF-8'),'UTF-8-sig'))['data'])
get-KeyError:'data'。因此,尝试删除['data'],得到了以下结果:数据集维度{'Region':{'label':'Region','category':{'i…label Folkmängden efter Region,tabellinnehåll ochår source Statistiska centralbyrån(SCB)status{'50':'}更新的2018-09-05T11:52:00Z值[79311938004270808114281151658129129,…具有我想要的值,但没有年份。奇怪的是…如果我复制/粘贴问题中的代码并只添加这一行
df=pd.DataFrame(json.loads(codecs.decode(bytes)(r.text,'utf-8'),'utf-sig'))['data')
,一切正常