Pandas将15分钟数据重采样为30分钟求和结果异常如何解决?
问题根因
- 重采样频率参数配置错误:你代码中写的
'2T'代表2分钟间隔,完全不符合30分钟聚合的需求,30分钟间隔的正确参数为'30T'或'30min'。 - 索引匹配错误:重采样后的结果是30分钟间隔的时间索引,直接赋值给15分钟间隔的原序列时,只有时间节点完全重合的位置会保留数值,其余位置自动填充为空,自然看不到相邻区间的累加效果。
解决方法
场景1:单独输出30分钟间隔的聚合结果
直接对15分钟降雨字段执行重采样求和即可:
resampled_30min = series['15 mins rainfall'].resample('30T', label='right', closed='right').sum()
得到的结果如下:
| time | 30mins rainfall |
|---|---|
| 2020-09-13 07:00:00 | 5.208 |
| 2020-09-13 07:30:00 | 7.365 |
场景2:将聚合结果回填到原15分钟间隔的表中
如果需要保留原数据的行结构,把30分钟聚合值填充到对应结束时间的行里,需要加reindex对齐原表索引:
series["30mins"] = series['15 mins rainfall'].resample('30T',label="right",closed="right").sum().reindex(series.index)
运行后原表的输出效果如下:
| time | 15 mins rainfall | 30mins |
|---|---|---|
| 2020-09-13 06:45:00 | 2.587 | nan |
| 2020-09-13 07:00:00 | 2.621 | 5.208 |
| 2020-09-13 07:15:00 | 1.617 | nan |
| 2020-09-13 07:30:00 | 5.748 | 7.365 |
内容的提问来源于stack exchange,提问作者r.pinto
相关产品推荐
相关产品推荐

