You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用pandas的interpolate插值后输出与原数据一致是什么原因?

问题原因分析
  • 第一,pd.DataFrame()传参顺序错误:你当前的写法a = pd.DataFrame(x, y)是把x作为表格的数据列,y作为表格的行索引,你要填充的NaN值全在索引里,而interpolate()默认只对数据列的空值做插值,自然不会生效。你本意应该是把y作为数据列,x作为索引或者另一列。
  • 第二,interpolate()默认返回新的DataFrame,不会修改原对象,要么用变量接收返回值,要么加inplace=True参数原地修改。
修正后的代码
import numpy as np
import pandas as pd

x = np.array([2, 2.5, 3, 3.5, 3.75, 4, 4.5, 4.75, 5, 5.25, 5.5, 6])
y = np.array([5.197, 7.78, 11.14, 15.09, np.nan, 19.245, 23.11, np.nan, 26.25, np.nan, 28.6,30.3])
# 构造DataFrame时调整参数顺序,y作为数据列,x作为索引
a = pd.DataFrame(y, index=x)
# 接收interpolate返回的新对象,或者加inplace=True
a = a.interpolate()
print(a)
运行输出
0
2.00    5.1970
2.50    7.7800
3.00   11.1400
3.50   15.0900
3.75   17.1675
4.00   19.2450
4.50   23.1100
4.75   24.6800
5.00   26.2500
5.25   27.4250
5.50   28.6000
6.00   30.3000

可以看到原来的三个NaN值已经按照默认线性插值的规则填充完成。

内容的提问来源于stack exchange,提问作者Gletcher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:36:04