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
:
中替换 NaN
s
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)
在列的末尾有一个缺失值的数据框,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
:
NaN
s
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)