[英]Extracting values from a nested JSON file
我正在嘗試從空氣質量傳感器中提取值,以將其顯示在設備上。 我無法提取溫度,濕度和PM傳感器的嵌套值。 如何獲得它們作為單獨的鍵和值?
我確實安裝了熊貓螞蟻,嘗試了其他解決方案:
import pandas as pd
url = 'http://192.168.0.117/data.json'
df = pd.read_json(url, orient='columns')
print (df)
和
import urllib.request, json
with urllib.request.urlopen("http://192.168.0.117/data.json") as url:
data = json.loads(url.read().decode())
print (data)
我得到的是值列表:
{
"software_version": "NRZ-2018-123B",
"age": "28",
"sensordatavalues": [
{
"value_type": "SDS_P1",
"value": "18.40"
},
{
"value_type": "SDS_P2",
"value": "10.33"
},
{
"value_type": "temperature",
"value": "9.50"
},
{
"value_type": "humidity",
"value": "99.90"
},
{
"value_type": "samples",
"value": "1753691"
},
{
"value_type": "min_micro",
"value": "80"
},
{
"value_type": "max_micro",
"value": "793061"
},
{
"value_type": "signal",
"value": "-73"
}
]
}
如何獲得它們作為單獨的變量?
您需要先將json展平,然后再將其讀入pandas。 json_normalize
似乎正是您所需要的。 這是一個教程:
https://www.kaggle.com/jboysen/quick-tutorial-flatten-nested-json-in-pandas
恭喜您開始使用python! 這是進行數據分析的好工具。
butterflyknife是正確的,json_normalize是在此處使用的好工具。
我在本地嘗試過:
import urllib.request
import json
import pandas as pd
from pandas.io.json import json_normalize
sample_data = '{"software_version": "NRZ-2018-123B", "age":"28", "sensordatavalues":[{"value_type":"SDS_P1","value":"18.40"},{"value_type":"SDS_P2","value":"10.33"},{"value_type":"temperature","value":"9.50"},{"value_type":"humidity","value":"99.90"},{"value_type":"samples","value":"1753691"},{"value_type":"min_micro","value":"80"},{"value_type":"max_micro","value":"793061"},{"value_type":"signal","value":"-73"}]}'
y = json.loads(sample_data)
y2 = json_normalize(y["sensordatavalues"])
該樣本數據現在為y2,這是一個數據幀,如下所示:
# >>> y2
# value value_type
# 0 18.40 SDS_P1
# 1 10.33 SDS_P2
# 2 9.50 temperature
# 3 99.90 humidity
# 4 1753691 samples
# 5 80 min_micro
# 6 793061 max_micro
# 7 -73 signal
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.