Pandas使用Resample结合Interpolate重采样时数值列产生NaN问题
问题原因
直接执行df.resample("12h").interpolate()返回全NaN的核心原因是:
resample("12h")生成的是按12小时拆分的时间分组对象,此时调用interpolate()会以单个12小时分箱为独立单位执行插值- 原始数据是日频,所有非空值都落在每日0点的分箱边界,每个12小时分箱内最多只有1个非空值,不满足插值需要至少2个相邻参考值的要求,因此非边界位置全部返回NaN
修复方案
先通过asfreq()完成频率转换,将原始值对齐到12小时间隔的连续时间索引上,再调用插值方法即可得到步长0.5的预期结果:
# 先转成12h频率的规整结构,再做线性插值 result = df.resample("12h").asfreq().interpolate()
执行后返回的结果中,每日0点位置保留原始0-5的整数值,每日12点位置会自动插入0.5、1.5、2.5、3.5、4.5的插值结果,和预期完全一致。
内容的提问来源于stack exchange,提问作者fransua
相关产品推荐
相关产品推荐

