Pandas调用interpolate插值时填充NaN而非生成插值值如何解决
Pandas 8Hz升采样16Hz线性插值NaN问题解决
错误原因
resample('62.5L')升采样操作生成的新增时间点默认填充为NaN,你将插值操作和升采样操作拆分执行,插值逻辑无法基于原始数据的取值间隔计算填充值,最终出现大量空值。
正确实现
直接在resample操作后链式调用插值方法替换原ffill()即可:
# 通用线性插值方案 new_df = new_df.resample('62.5L').interpolate(method='linear', limit_direction='both')
如果DataFrame索引为datetime时间类型,推荐使用时间专属插值,精度更高:
# 先确认索引格式,非datetime类型先转换 new_df.index = pd.to_datetime(new_df.index) # 基于时间间隔的线性插值 new_df = new_df.resample('62.5L').interpolate(method='time', limit_direction='both')
补充说明
limit_direction='both'参数用于控制插值同时向序列首尾方向延伸填充,避免数据开头或结尾位置出现残留NaN。
内容的提问来源于stack exchange,提问作者user5349
相关产品推荐
相关产品推荐

