[英]Appending nested JSON data into columns using Python
我正在尝试将 JSON 响应的 output 放入带有列标题的更易于阅读的表中。 我遇到了尝试访问特定 JSON 信息的问题。 这是我到目前为止所拥有的
import json
import requests
import pandas as pd
url = requests.get('https://apitest.com/api/scanners',auth=('', ''))
r = json.loads(url.content)
a = r['items']
我的回复是这里的格式
我希望能够 append 这个信息与扫描仪名称、天线编号和最后扫描日期的信息,所以我最终可以创建一个 dataframe 与列标题
d = []
for h in a:
d.append(
{ 'ScannerName': h['name'],
'AntennaNumber':h['antennae']['antenna'],
'LastScanDate': h['antennae']['lastScanDate']
}
)
此时我收到“ TypeError: list indices must be integers or slices, not str ”。 我想知道是否有人对可能的解决方案有任何建议,或者我是否需要以不同的方式解决这个问题。 谢谢你。
'antennae'的数据类型是list ,这就是为什么你不能通过 key 来获取 value。
您必须迭代“天线”列表,然后才能获得“天线”和“lastScanDate”键。
可能这会按您的预期工作:
d = []
for h in a:
scanner = {
'ScannerName' : h['name'],
'AntennaNumber' : [],
'LastScanDate' : []
}
for antennae in h['antennae']:
scanner['AntennaNumber'].append(antennae['antenna'])
scanner['LastScanDate'].append(antennae['lastScanDate'])
d.append(scanner)
print(d)
使用普通的 Pandas dataframe,您可能几乎可以到达您想要的位置:
import json
import pandas as pd
import requests
url = 'https://api.wheretheiss.at/v1/satellites/25544/positions?timestamps=1593535000,1593538000'
response = requests.get(url)
r = json.loads(response.content)
pd.DataFrame(r)
(出来一张桌子)。
为了从嵌套的内部级别获取数据,我将 go 与df.apply()
与 lambda 函数一起使用!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.