如何从这个特定的 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"])
我正在尝试使用 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"])