如何从这个特定的 JSON 文件示例中迭代和提取数据

How to iterate and extract data from this specific JSON file example

我正在尝试使用 Python 从 JSON 文件中提取数据。

主要是,我想从 "Technicals" 部分中提取日期和时间,将其放入数据框的一列中,同时提取 "AKG" 数字并将其放入数据框的第二列。是的,我看过类似的问题,但这个问题是不同的。感谢您的帮助。

JSON 文件的 downNdirty 示例如下:

    { 'Meta Data': { '1: etc'
                     '2: etc'},
      'Technicals': { '2017-05-04 12:00': {  'AKG': '64.8645'},
                      '2017-05-04 12:30': {  'AKG': '65.7834'},
                      '2017-05-04 13:00': {  'AKG': '63.2348'}}}

如您所见,令我感到困惑的是,日期保持不变,但时间却提前了。 'AKG' 永远不会改变,但数字会改变。我一直在使用的一些相关代码如下。我可以提取日期和时间,但我似乎无法达到 AKG 数字。请注意,我不需要 "AKG",只需要数字。

我会提到:我正在创建一个 DataFrame,因为在使用数据创建绘图时这会更容易使用……对吗?我愿意接受一系列列表等,或者任何更简单的事情,如果这最终会帮助我处理情节的话。

    akg_time = []
    akg_akg = []
    technicals = akg_data['Technicals']  #akg_data is the entire json file

    for item in technicals:  #this works
         akg_time.append(item)

    for item in technicals:  #this not so much
         symbol = item.get('AKG')
         akg_akg.append(symbol)

    pp.pprint(akg_akg)
    error: 'str' object has no attribute 'get'

你快搞定了。你甚至不需要第二个循环。您可以在第一个本身中附加 akg 值:

for key in technicals: # renaming to key because that is a clearer name
     akg_time.append(key)
     akg_akg.append(technicals[key]['AKG'])

你的错误是因为你认为item(或key)是一个命令。它不是。它只是一个字符串,technicals 字典的 keys 之一,所以你实际上需要使用 symbols = technicals[key].get('AKG')

尽管 Coldspeed 的回答是正确的:当你有一本字典时,你会像这样遍历键和值:

Python 3

for key,value in technicals.items():
     akg_time.append(key)
     akg_akg.append(value["akg"])

Python 2

for key,value in technicals.iteritems():
     akg_time.append(key)
     akg_akg.append(value["akg"])