我试图用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'
答案 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"])