在内部,interpolate方法使用,其避免了填充传播大于特定的阈值以上的“限制”参数。
>>>df=pd.DataFrame([0, np.nan, np.nan, np.nan, np.nan,np.nan, 2])
>>>df
df
0
0 0
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 2
>>>df.interpolate(limit=2)
0
0 0.000000
1 0.333333
2 0.666667
3 NaN
4 NaN
5 NaN
6 2.000000
默认情况下,限制适用于正向。在向后的方向上,默认限制被设置为零。这就是为什么你的第一步不是由方法填补。 可以使用'limit_direction'参数来改变方向。
df.interpolate(limit=2, limit_direction='backward')
0
0 0.000000
1 NaN
2 NaN
3 NaN
4 1.333333
5 1.666667
6 2.000000
填补了第一步,你的数据帧的最后一个步骤,可以应设置为“限制”和“limit_direction”到“两个”非零值:
>>> df=pd.DataFrame([ np.nan, np.nan, 0, np.nan, 2, np.nan,8,5,np.nan, np.nan])
>>> df
0
0 NaN
1 NaN
2 0
3 NaN
4 2
5 NaN
6 8
7 5
8 NaN
9 NaN
>>> df.interpolate(method='spline', order=1, limit=10, limit_direction='both')
0
0 -3.807382
1 -2.083581
2 0.000000
3 1.364022
4 2.000000
5 4.811625
6 8.000000
7 5.000000
8 4.937632
9 4.138735
的已讨论的主题here
你认为在使用limit_direction ='both'(限制=无)并使用外推之间存在差异,就像在这里为instace所做的那样(https://stackoverflow.com/questions/22491628/extrapolate-values-in-pandas -dataframe)? –