如何从此特定JSON文件示例

时间:2017-07-16 20:46:46

标签: python json extraction

我试图用Python从JSON文件中提取数据。

主要是,我想从"技术"中提取日期和时间。部分,将其放在数据帧的一列中,以及拉出" 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'

2 个答案:

答案 0 :(得分:1)

你几乎得到了它。你甚至不需要第二个循环。您可以将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字典的之一,因此您实际上需要使用symbols = technicals[key].get('AKG')

答案 1 :(得分:1)

虽然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"])