我已经嵌套了json文件,我正在尝试将数据放入数据框。我必须提取传感器时间,然后提取元素,最后提取传感器信息。 json文件的外观如下:
{
"sensor-time": {
"timezone": "America/Los_Angeles",
"time": "2019-11-21T01:00:04-08:00"
},
"status": {
"code": "OK"
},
"content": {
"element": [{
"element-id": 0,
"element-name": "Line 0",
"sensor-type": "SINGLE_SENSOR",
"data-type": "LINE",
"from": "2019-11-21T00:00:00-08:00",
"to": "2019-11-21T01:00:00-08:00",
"resolution": "ONE_HOUR",
"measurement": [{
"from": "2019-11-21T00:00:00-08:00",
"to": "2019-11-21T01:00:00-08:00",
"value": [{
"value": 0,
"label": "fw"
}, {
"value": 0,
"label": "bw"
}
]
}
]
}
]
},
"sensor-info": {
"serial-number": "D8:80:39:D9:6B:9B",
"ip-address": "192.168.0.3",
"name": "XD01",
"group": "Boost Mobile",
"device-type": "PC2"
}
}
这是到目前为止的代码:
import json
from pandas.io.json import json_normalize
import glob
import urllib
import sqlalchemy as sa
# Create empty dataframe
# Drill through each file with json extension in the folder, open it, load it and parse it into dataframe
file = 'C:/Test/Loading/testfile.json'
with open(file) as json_file:
json_data = json.load(json_file)
df = json_normalize(json_data, meta=['sensor-time'])
df
这是我运行代码时的输出:
我尝试使用flatten_json库,并且我能得到的最好的是此代码:
with open(file) as json_file:
json_data = json.load(json_file)
flat = flatten_json(json_data)
df = json_normalize(flat)
我得到一行33列的输出。因此,在我的情况下,由于我在json文件的Measurements部分下有多个值,因此我得到了每个度量值的列。我所要获得的是3行24列。每次测量一行。 那我现在如何修改呢?
答案 0 :(得分:0)
我认为最简单的方法是使用pandas.DataFrame(json_data);那么您可以通过以下方式访问这些信息: