我正在尝试从python中的类对象创建熊猫数据框。
该类对象是我从以下教程中获得的邮递员python脚本的输出:https://developer.cisco.com/meraki/build/meraki-postman-collection-getting-started/
我希望获得此输出
print(response.text)
给出:
[{"id":578149602163689207,"name":"Axel Network Test"},{"id":578149602163688579,"name":"Your org"},{"id":578149602163688880,"name":"Your org"},{"id":578149602163688885,"name":"Your org"},{"id":578149602163689038,"name":"Tory's Test Lab"},.......
我想将其放入带有ID列和名称列的pandas数据框中。
import requests
import pandas as pd
url = "https://api.meraki.com/api/v0/organizations"
headers = {
'X-Cisco-Meraki-API-Key': "xxxxxxxxxxxxxxxxxxxxxxxxxxx",
'User-Agent': "PostmanRuntime/7.15.0",
'Accept': "*/*",
'Cache-Control': "no-cache",
'Postman-Token': "7d29cb4e-b022-4954-8fc8-95e5361d15ba,1a3ec8cb-5da8-4983-956d-aab45ed00ca1",
'accept-encoding': "gzip, deflate",
'referer': "https://api.meraki.com/api/v0/organizations",
'Connection': "keep-alive",
'cache-control': "no-cache"
}
response = requests.request("GET", url, headers=headers)
我很累
df = pd.DataFrame(response, columns=['id', 'name'])
但这会产生许多错误。
查看错误日志:https://pastebin.com/4BKFYng1
我如何实现自己想要的?
答案 0 :(得分:3)
由于响应文本位于json
中,因此您可以:
1.将json转换成字典。
2.将字典作为数据帧输入。
#load the json as a dict
data = json.loads(response.text)
df = pd.DataFrame.from_dict(data, orient='index')
df.reset_index(level=0, inplace=True)
然后,您可以更改列的名称或其他任何内容。
答案 1 :(得分:2)
https://angular.io/api/forms/FormArray接受JSON字符串或类似JSON文件的对象。
In [10]: import pandas as pd
In [11]: df = pd.read_json(response.text)
In [12]: df
Out[12]:
id name
0 578149602163689207 Axel Network Test
1 578149602163688579 Your org
2 578149602163688880 Your org
3 578149602163688885 Your org
4 578149602163689038 Tory's Test Lab
答案 2 :(得分:1)
在收到响应后,您将无法像前面提到的@ ASHu2那样反序列化对python对象的json响应
import pandas as pd
import json
data = json.loads(response.text)
df= pd.DataFrame(data=data, columns=["id","name"])
#Optional define index
df.set_index('id', inplace=True)
答案 3 :(得分:1)
尝试一下:
df = pd.DataFrame.from_dict(response.json())
代替此:
df = pd.DataFrame(response, columns=['id', 'name'])