在python3中读取无值的嵌套json

在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:

我有一个JSON数据集,有4列——数据、帧、周期和时间戳。 我有一些没有“数据”值“[]”的记录

当我尝试下面的解决方案时,它会删除不包含“data”值“[]”的行。我不想删除结果中的这些列,而是用0或NA填充缺少的值

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_')