我有一些手机加速度计数据的 json 数据。看起来像这样:
{u'timestamps': {u'1524771017235': [[u'x',
u'y',
u'z',
u'rotationX',
u'rotationY',
u'rotationZ'],
[-0.02, 0, 0.04, 102.65, 68.15, 108.61],
[-0.03, 0.02, 0.02, 102.63, 68.2, 108.5],
[-0.05, 0.01, 0.1, 102.6, 68.25, 108.4],
[-0.02, 0, 0.09, 102.6, 68.25, 108.4],
[-0.01, 0, 0.03, 102.6, 68.25, 108.4]]}}
我想要的是一个数据帧,其中包含数据名称的列(x、y、z、rotationX、rotationY、rotationZ)和每个数据条目的行。时间戳信息可以存储在其他地方。
当我使用 d = pd.read_json('data.json') 时,这就是我得到的:
timestamps
2018-04-26 19:30:17.235 [[x, y, z, rotationX, rotationY, rotationZ], [...
它似乎以时间戳作为索引。将其余所有内容放入 1 个单元格中。
我对 json 没有太多经验,所以 pandas.read_json api 并没有多大意义。请帮忙。
我当前的解决方法是手动跳过前两个字典。并创建一个以第一列作为标题的 df。它有效,但确实不理想......
dataDf = pd.DataFrame(data = d['timestamps']['1524771017235'][1:], columns = d['timestamps']['1524771017235'][0])
x y z rotationX rotationY rotationZ
0 -0.02 0.00 0.04 102.65 68.15 108.61
1 -0.03 0.02 0.02 102.63 68.20 108.50
2 -0.05 0.01 0.10 102.60 68.25 108.40
谢谢
最佳答案
您需要的是访问字典的键 {u'1524771017235': [[u'x', ...
是与键 timestamps 关联的值与您的 json 文件关联的字典
。然后尝试:d
的
d['timestamps'].keys()[0]
它应该返回您的'1524771017235'
值,因此要创建您的dataDf
只需执行以下操作:
dataDf = pd.DataFrame(data = d['timestamps'][d['timestamps'].keys()[0]][1:],
columns = d['timestamps'][d['timestamps'].keys()[0]][0])
你会得到相同的结果。
关于python - 如何在Python中将json文件解析为DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50051081/