使用Pandas降采样出现NaN值,拆分传感器文件是否可行?
问题分析与解决方案
NaN值出现的核心原因
把CSV按传感器拆分成多个文件无法解决NaN问题。你的结果里出现NaN,本质是:
- 某个传感器在对应小时区间内没有任何15分钟的温度记录,
resample('H').mean()没有可计算的数据,自然生成NaN; - 若
readable_time未转换为datetime类型,会导致resample逻辑错误,也可能产生NaN。
不拆分文件的可行解决办法
先确保时间索引格式正确
先把readable_time转为datetime类型,避免采样逻辑出错:import pandas as pd # 转换时间列格式 Data['readable_time'] = pd.to_datetime(Data['readable_time']) Data = Data.set_index('readable_time')处理NaN值的两种思路
- 保留所有小时区间,填充缺失值:
如果需要每个传感器的每小时记录(哪怕无数据),可以用固定值或前后值填充NaN:# 按传感器分组重采样,NaN填充为0 C_hourly = Data.groupby('sensor_no').resample('H').mean().fillna(0).reset_index() # 或用前一个有效值填充 C_hourly = Data.groupby('sensor_no').resample('H').mean().ffill().reset_index() - 只保留有有效数据的小时区间:
直接过滤掉包含NaN的行:C_hourly = Data.groupby('sensor_no').resample('H').mean().dropna().reset_index()
- 保留所有小时区间,填充缺失值:
关于拆分文件的说明
拆分单个传感器为独立文件,只是把数据分散存储,对每个文件执行resample时,该出现NaN的小时区间依然会生成NaN,完全解决不了问题,反而增加了文件管理的成本,不建议这么做。
内容的提问来源于stack exchange,提问作者Scholar7
相关产品推荐
相关产品推荐

