在內部,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)? –