繁体   English   中英

使用 Python 将嵌套的 JSON 数据附加到列中

[英]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.

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