Python 熊猫寻找并插值缺失的值

Python 熊猫寻找并插值缺失的值,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

这个问题基本上是对

解码视频时,某些帧丢失,需要对数据进行插值

当前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
意味着label
p
将始终包含所有帧,但是
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