当使用pandas interpolate()来填充NaN值时,如下所示:
In [1]: s = pandas.Series([np.nan, np.nan, 1, np.nan, 3, np.nan, np.nan])
In [2]: s.interpolate()
Out[2]:
0 NaN
1 NaN
2 1
3 2
4 3
5 3
6 3
dtype: float64
In [3]: pandas.version.version
Out[3]: '0.16.2'
Run Code Online (Sandbox Code Playgroud)
,为什么pandas用3s替换索引5和6的值,但是将值保留为0和1不变?
我可以改变这种行为吗?我想把NaN留在第5和第6指数.
(实际上,我希望它能够线性推断以填充0,1,5和6中的所有内容,但这是一个不同的问题.如果你回答它也会获得奖励积分!)
在熊猫中使用插值是很容易的是在熊猫df.interpolate()
中有一种方法,具有相同的优雅做外推的方法.我知道我的推断符合二次多项式.
在Pandas.DataFrame
使用中插入值很容易Series.interpolate
,如何进行外推?
例如,给定一个DataFrame如图所示,我们怎样才能将它推断14个月到2014-12-31?线性外推很好.
X1 = range(10)
X2 = map(lambda x: x**2, X1)
df = pd.DataFrame({'x1': X1, 'x2': X2}, index=pd.date_range('20130101',periods=10,freq='M'))
Run Code Online (Sandbox Code Playgroud)
我认为必须首先创建一个新的DataFrame,DateTimeIndex从2013-11-31开始并延长14个M
周期.除此之外,我被困住了.