【发布时间】:2019-11-14 23:04:49
【问题描述】:
我已使用以下 Python 行从特定 API 读取数据
import requests
import json
# read all Measurement from one sensor for several days.
r = requests.get('https://wastemanagement.post-iot.lu/measurement/measurements?source=83512 pageSize=1000000000&dateFrom=2019-10-26&dateTo=2019-10-28', auth=('xxxxx', 'xxxxx'))
text=r.text # data is stored in json format
这是一个输出示例,但实际输出包含几行: 实际输出可以从这里下载actual output
enter code here
Valid JSON (RFC 8259)
Formatted JSON Data
{
"next":"https://wastemanagement.post-iot.lu/measurement/measurements?dateTo=2019-10-28&
pageSize=2000&source=83512&dateFrom=2019-10-26¤tPage=2",
"self":"https://wastemanagement.post-iot.lu/measurement/measurements?dateTo=2019-10-28&
pageSize=2000&source=83512&dateFrom=2019-10-26¤tPage=1",
"statistics":{
"totalPages":null,
"currentPage":1,
"pageSize":2000
},
"measurements":[
{
"self":"https://wastemanagement.post-iot.lu/measurement/measurements/108451",
"time":"2019-10-26T00:00:06.494Z",
"id":"108451",
"source":{
"self":"https://wastemanagement.post-iot.lu/inventory/managedObjects/83512",
"id":"83512"
},
"type":"c8y_Measurement",
"battery":{
"percent":{
"unit":"%",
"value":98
}
}
},
{
"self":"https://wastemanagement.post-iot.lu/measurement/measurements/108452",
"time":"2019-10-26T00:00:06.538Z",
"id":"108452",
"source":{
"self":"https://wastemanagement.post-iot.lu/inventory/managedObjects/83512",
"id":"83512"
},
"type":"TemperatureMeasurement",
"c8y_TemperatureMeasurement":{
"T":{
"unit":"C",
"value":23
}
}
},
{
"self":"https://wastemanagement.post-iot.lu/measurement/measurements/108537",
"time":"2019-10-26T00:00:06.577Z",
"id":"108537",
"source":{
"self":"https://wastemanagement.post-iot.lu/inventory/managedObjects/83512",
"id":"83512"
},
"type":"c8y_Measurement",
"c8y_DistanceMeasurement":{
"distance":{
"unit":"cm",
"value":21
}
}
},
我尝试使用以下代码将 JSON 格式(存储在文本中)转换为 pandas DataFrame,但不起作用
data = json.loads(text)
我想将 JSON 格式转换为 pandas DataFrame,此 DataFrame 应包含 五列(id、电池、T 或温度、时间和距离)和 几行
【问题讨论】:
-
数据中的前三行似乎是 API 出于某种原因包含的非 JSON 文本。获取python模块解析的json是第一步。您遇到了什么具体错误?
-
我没有收到错误,但我想将存储在(文本)中的数据转换为数据框。我已经更新了帖子,请参阅附图
-
好的,
json.loads返回一个普通的 Python 对象为data。您是否尝试从data['measurements']创建 DataFrame? -
@mgrollins,感谢您的帮助。如果我向您提供链接的用户名和密码,您能帮我修改代码吗(因为我是 Python 新手)
-
看看下面的答案,看起来不错!