Pandas DataFrame两列插值:按x列步长补全后逐段插值y列值
逐段两点插值实现方案
你需要的逐段相邻点插值可以通过Pandas原生的reindex+interpolate组合实现,完全不会触发全量数据拟合,仅在每两个相邻原始点之间做线性插值,代码如下:
首先导入依赖:
import pandas as pd import numpy as np
完整实现代码
# 示例输入 df = pd.DataFrame({'x':[1,3,5],'y':[10,30,50] }) # 定义固定步长 step = 1 # 第一步:补全x列固定步长值 # 生成覆盖x范围的固定步长序列 full_x = np.arange(df['x'].min(), df['x'].max() + step, step) # 将x设为索引后重采样到完整x序列,重置索引后得到补全x的结果 df = df.set_index('x').reindex(full_x).reset_index() print("第一步补全x后的结果:") print(df) # 第二步:逐段相邻两点插值y # method='linear'默认仅在相邻非空值之间做线性插值,无全局拟合 df['y'] = df['y'].interpolate(method='linear') print("最终插值结果:") print(df)
方案说明
- Pandas的
interpolate(method='linear')默认仅在相邻的两个有效原始数据点之间做线性插值,不会对全量数据做全局拟合,每一段的插值计算仅用到当前段的首尾两个原始值,完全符合需求 - 只需要修改
step参数即可适配不同的固定步长要求,不需要改动其他逻辑
内容的提问来源于stack exchange,提问作者Mainland
相关产品推荐
相关产品推荐

