土壤湿度传感器CSV数据处理:timestamp转日期+按sensor ID拆分工作表
实现方案
依赖pandas做数据处理、openpyxl做Excel多工作表写入,提前通过pip install pandas openpyxl安装依赖即可。
完整代码示例
import pandas as pd import json # ---------- 可选:如果还未完成JSON列拆分,先执行这部分逻辑 ---------- # 读取原始CSV文件,替换为你的文件路径 raw_df = pd.read_csv("raw_sensor_data.csv") # 假设存储传感器上报JSON的列名为report_data,替换为你的实际列名 json_parsed = raw_df["report_data"].apply(lambda x: pd.Series(json.loads(x))) # 拼接原数据和解析后的JSON字段 processed_df = pd.concat([raw_df, json_parsed], axis=1) # ------------------- 功能1:timestamp转标准日期时间 ------------------- # 假设时间戳列名为timestamp,秒级时间戳用unit="s",毫秒级改为unit="ms" processed_df["standard_datetime"] = pd.to_datetime(processed_df["timestamp"], unit="s").dt.strftime("%Y-%m-%d %H:%M:%S") # 若后续需要做时间维度计算,可去掉.dt.strftime,直接保留datetime64类型即可 # ------------------- 功能2:按sensor ID生成独立工作表 ------------------- # 假设传感器ID列名为sensor_id,替换为你的实际列名 sensor_groups = processed_df.groupby("sensor_id") # 写入多工作表Excel,替换为你的输出路径 with pd.ExcelWriter("sensor_output.xlsx", engine="openpyxl") as writer: for sensor_id, group_data in sensor_groups: # 处理工作表名:Excel限制工作表名最多31字符,禁止包含/ \ ? * [ ] sheet_name = f"sensor_{sensor_id}".replace("/", "").replace("\\", "").replace("?", "").replace("*", "").replace("[", "").replace("]", "")[:30] group_data.to_excel(writer, sheet_name=sheet_name, index=False)
注意事项
- 若你的时间戳是13位毫秒级,修改
pd.to_datetime的unit参数为"ms"即可正确转换 - 若传感器ID包含特殊字符,上述代码已做自动清洗,避免写入Excel时报错
- 你可以根据需求调整
strftime的格式,比如只保留日期可以改成"%Y-%m-%d"
内容的提问来源于stack exchange,提问作者Shivash Mishra
相关产品推荐
相关产品推荐

