Python 用于分析的JSON平坦化
需要一点帮助。我需要将这个json展平,以便可以使用它进行分析 json的示例是:Python 用于分析的JSON平坦化,python,json,pandas,Python,Json,Pandas,需要一点帮助。我需要将这个json展平,以便可以使用它进行分析 json的示例是: {'data': [{'tag': 'U128_CRC_2', 'timestamp': 1575234889002, 'value': 0.0}], 'metadata': {'event': 'alarm.reset', 'idx': '1372', 'timestamp': 1575234889.002701}, 'productID': '41ae4b41-56be-4bf2-a6a8-7ae
{'data': [{'tag': 'U128_CRC_2', 'timestamp': 1575234889002, 'value': 0.0}],
'metadata': {'event': 'alarm.reset',
'idx': '1372',
'timestamp': 1575234889.002701},
'productID': '41ae4b41-56be-4bf2-a6a8-7aee4d15bf54',
'timestamp': 1575234889008,
'topicIdx': '1'}
我运行了以下代码:
from pandas import json_normalize
with open('NewJson.json') as f:
d1 = json.load(f)
works_data = json_normalize(data=d1, record_path='data',
meta=['tag','value','timestamp'])
我得到了以下相同的错误:
KeyError: "Try running with errors='ignore' as key 'tag' is not always present"
有人能帮忙吗?你的问题是“数据”键是列表和字典。您必须手动删除列表: 例如:
from pandas.io.json import json_normalize
d1 = {'data': [{'tag': 'U128_CRC_2', 'timestamp': 1575234889002, 'value': 0.0}],
'metadata': {'event': 'alarm.reset',
'idx': '1372',
'timestamp': 1575234889.002701},
'productID': '41ae4b41-56be-4bf2-a6a8-7aee4d15bf54',
'timestamp': 1575234889008,
'topicIdx': '1'}
d1['data'] = d1.get('data')[0]
works_data = json_normalize(data=d1)
works_data
输出:
productID timestamp topicIdx data.tag data.timestamp data.value metadata.event metadata.idx metadata.timestamp
0 41ae4b41-56be-4bf2-a6a8-7aee4d15bf54 1575234889008 1 U128_CRC_2 1575234889002 0.0 alarm.reset 1372 1.575235e+09
您是否尝试了错误消息的建议?