Python 熊猫寻找并插值缺失的值
这个问题基本上是对 解码视频时,某些帧丢失,需要对数据进行插值 当前dfPython 熊猫寻找并插值缺失的值,python,pandas,dataframe,Python,Pandas,Dataframe,这个问题基本上是对 解码视频时,某些帧丢失,需要对数据进行插值 当前df frame pvol vvol area label 0 NaN 109.8 120 v 2 NaN 160.4 140 v 0 23.1 NaN 110 p 1 24.3 NaN 110 p 2 25.6 NaN 112 p 预期df
frame pvol vvol area label
0 NaN 109.8 120 v
2 NaN 160.4 140 v
0 23.1 NaN 110 p
1 24.3 NaN 110 p
2 25.6 NaN 112 p
预期df
frame pvol vvol p_area v_area
0 23.1 109.8 110 110
1 24.3 135.1 110 111 # Interpolated for label v
2 25.6 160.4 112 120
我知道我可以做df.interpolate()。重塑才是问题所在
注意:label p>=label v
意味着labelp
将始终包含所有帧,但是v
可能会丢失帧您可以像上一个问题一样重新塑造dropna,但现在需要指定只删除空列,然后插入:
out = (df.pivot(index='frame', columns='label')
.dropna(axis=1, how='all') # only drop empty columns
.interpolate() # interpolate
)
out.columns = [f'{y}_{x}' for x,y in out.columns]
输出:
p_pvol v_vvol p_area v_area
frame
0 23.1 109.8 110.0 120.0
1 24.3 135.1 110.0 130.0
2 25.6 160.4 112.0 140.0
更改dropna
删除问题
s = df.set_index(['frame','label']).unstack().dropna(thresh=1,axis=1)
s.columns = s.columns.map('_'.join)
s = s.interpolate()
Out[279]:
pvol_p vvol_v area_p area_v
frame
0 23.1 109.8 110.0 120.0
1 24.3 135.1 110.0 130.0
2 25.6 160.4 112.0 140.0