Pandas 在最后一个数据点之后填充缺失值的索引插值

Pandas index interpolation filling in missing values after the last data point

在列的末尾有一个缺失值的数据框,f.e。:

df = pd.DataFrame({'a':[np.nan,1,2,np.nan,np.nan,5,np.nan,np.nan]}, index=[0,1,2,3,4,5,6,7])

     a
0  NaN
1  1.0
2  2.0
3  NaN
4  NaN
5  5.0
6  NaN
7  NaN

使用'index'插值法:

df.interpolate(method='index')

Returns最后一个缺失值向前填充的数据框:

     a
0  NaN
1  1.0
2  2.0
3  3.0
4  4.0
5  5.0
6  5.0
7  5.0

有没有办法关闭该行为并保留最后缺失的值:

     a
0  NaN
1  1.0
2  2.0
3  3.0
4  4.0
5  5.0
6  NaN
7  NaN

我认为 0.23.0+ 中需要新参数 limit_direction,检查 this:

df = df.interpolate(method='index', limit=1, limit_direction='backward')
print (df)
     a
1  1.0
2  2.0
3  3.0
4  4.0
5  5.0
6  NaN
7  NaN

编辑:如果只想在添加参数 limit_area:

中替换 NaNs
df = df.interpolate(method='index',limit_area='inside')
print (df)
     a
0  NaN
1  1.0
2  2.0
3  3.0
4  4.0
5  5.0
6  NaN
7  NaN

您的意思是应该保留最后一个 NaN(一个或多个)? 这个怎么样。 找到最后一个有效的 arg 索引并拆分、插值和追加。

valargmax=np.max(np.where((df.isnull().eq(False).values==True).flatten()==True))
r = df[0:(valargmax+1)].interpolate(method='index').append(df[(valargmax+1):])
print(r)