在python3中读取无值的嵌套json
我有一个JSON数据集,有4列——数据、帧、周期和时间戳。 我有一些没有“数据”值“[]”的记录 当我尝试下面的解决方案时,它会删除不包含“data”值“[]”的行。我不想删除结果中的这些列,而是用0或NA填充缺少的值在python3中读取无值的嵌套json,json,python-3.x,pandas,Json,Python 3.x,Pandas,我有一个JSON数据集,有4列——数据、帧、周期和时间戳。 我有一些没有“数据”值“[]”的记录 当我尝试下面的解决方案时,它会删除不包含“data”值“[]”的行。我不想删除结果中的这些列,而是用0或NA填充缺少的值 Sample data: {'data': [], 'frame': 807, 'period': 1, 'timestamp': '00:59:49.8'}, {'data': [], 'frame': 808, 'period': 1, 'timestamp': '00:
Sample data:
{'data': [], 'frame': 807, 'period': 1, 'timestamp': '00:59:49.8'},
{'data': [], 'frame': 808, 'period': 1, 'timestamp': '00:59:49.9'},
{'data': [], 'frame': 809, 'period': 1, 'timestamp': '00:59:50.0'},
{'data': [], 'frame': 810, 'period': 1, 'timestamp': '00:59:50.1'},
{'data': [{'group_name': 'away team',
'map_x': 175.72,
'map_y': 210.86,
'track_id': 4},
{'group_name': 'away team',
'map_x': 220.34,
'map_y': 128.27,
'track_id': 9},
{'group_name': 'away team',
'map_x': 214.22,
'map_y': 303.3,
'track_id': 14},
{'group_name': 'away team',
'map_x': 225.15,
'map_y': 106.97,
'track_id': 15}],
'frame': 811,
'period': 1,
'timestamp': '00:59:50.2'},
{'data': [{'group_name': 'away team',
'map_x': 175.48,
'map_y': 211.89,
'track_id': 4},
{'group_name': 'away team',
'map_x': 219.9,
'map_y': 128.51,
'track_id': 9},
{'group_name': 'away team',
'map_x': 214.48,
'map_y': 303.53,
'track_id': 14},
{'group_name': 'away team',
'map_x': 225.1,
'map_y': 106.0,
'track_id': 15}],
'frame': 812,
'period': 1,
'timestamp': '00:59:50.3'},
代码:
预期产出:
对于
规范化函数来说,主要的问题似乎太多了,所以需要一些预处理。是否可以将json更改为有效?我认为在导出为json之前不可能进行预处理:(我认为在创建DataFrame之前。我尝试先将缺少的值作为单独的DataFrame进行过滤,然后将其附加到通过规范化json创建的df中。我想知道是否有更好的方法来处理json_normaloze中的空值。
import json
from pandas.io.json import json_normalize
with open('timestamped_data.json') as data_file:
data = json.load(data_file)
df = json_normalize(data, 'data', ['timestamp', 'frame', 'period'],record_prefix='data_')