Pandas 5分钟时序数据重采样为小时均值时日期异常如何解决
问题原因及解决方法
问题核心诱因有两个:
pd.to_datetime自动推断日期格式时部分行解析错误,产生了超出预期的早期时间值- 时间索引未排序,重采样时从最小的异常时间值开始计算周期
具体解决步骤
- 显式指定日期格式转换时间列,避免自动推断出错
你原始CSV中的日期格式为日-月-两位年份 时:分,转换时指定对应格式即可确保所有行解析正确:
df['A'] = pd.to_datetime(df['A'], format='%d-%m-%y %H:%M')
- 检查时间范围确认无异常值
转换完成后先验证时间列的范围是否符合预期:
print(df['A'].min(), df['A'].max()) # 正常输出应为你数据的实际起止时间,比如 2021-01-16 00:00:00 2021-01-xx xx:00:00
如果存在异常时间值,先清洗对应行再执行后续操作。
3. 索引排序后再执行重采样
pandas重采样依赖有序的时间索引,设置索引后先排序再重采样:
df.set_index('A', inplace=True) # 对时间索引排序 df.sort_index(inplace=True) # 执行小时级重采样求均值 df2 = df.resample('H').mean() # 如需将时间索引变回普通列,和你预期输出格式一致,添加以下代码 df2 = df2.reset_index()
内容的提问来源于stack exchange,提问作者Aswin Kumar
相关产品推荐
相关产品推荐

