Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用于分析的JSON平坦化_Python_Json_Pandas - Fatal编程技术网

Python 用于分析的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

需要一点帮助。我需要将这个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-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

您是否尝试了错误消息的建议?