如何用Python函数将指定JSON转为Pandas DataFrame并提取SensorID
实现JSON到指定结构DataFrame的Python函数
需求说明
需要实现名为ImporterFunction的Python函数,接收JSON字符串输入,转换为指定结构的Pandas DataFrame,同时返回该DataFrame和对应的SensorID。函数调用形式为:
sensor_data_df, sensorID = ImporterFunction(json_str)
参数与输出要求:
- 输入
json_str为字符串类型 - 输出
sensor_data_df为Pandas DataFrame类型 - 输出
sensorID为字符串类型
输入JSON格式示例
{"SensorId": "B22EA071", "startUTC": 1671490577, "endUTC": 1671516101, "Data": [ { "TimeStamp": 1671490584, "V1": 21.1 }, { "TimeStamp": 1671490666, "V1": 21 }]}
目标DataFrame结构
| startUTC | endUTC | Timestamp | V1 |
|---|---|---|---|
| 1671490577 | 1671516101 | 1671490584 | 21.1 |
| 1671490577 | 1671516101 | 1671490666 | 21 |
实现代码
import json import pandas as pd def ImporterFunction(json_str): # 解析JSON字符串为字典 data_dict = json.loads(json_str) # 提取SensorID sensorID = data_dict["SensorId"] # 提取全局的startUTC和endUTC start_utc = data_dict["startUTC"] end_utc = data_dict["endUTC"] # 处理数据条目,添加全局时间范围并统一列名 processed_data = [] for item in data_dict["Data"]: processed_item = { "startUTC": start_utc, "endUTC": end_utc, "Timestamp": item["TimeStamp"], "V1": item["V1"] } processed_data.append(processed_item) # 转换为DataFrame并调整列顺序 sensor_data_df = pd.DataFrame(processed_data)[["startUTC", "endUTC", "Timestamp", "V1"]] return sensor_data_df, sensorID
代码说明
- JSON解析:用
json.loads()把输入字符串转成Python字典,方便提取字段。 - SensorID提取:直接从字典中取出
SensorId字段值。 - 数据预处理:遍历
Data列表中的每个时间点数据,为每个条目补充全局的startUTC和endUTC,同时把TimeStamp重命名为Timestamp匹配目标列名。 - 生成DataFrame:将预处理后的列表转成DataFrame,并调整列顺序确保和目标结构一致。
- 结果返回:返回生成的DataFrame和SensorID。
内容的提问来源于stack exchange,提问作者Niro Mal
相关产品推荐
相关产品推荐

