首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pandas查找并内插缺失值

Pandas查找并内插缺失值
EN

Stack Overflow用户
提问于 2020-11-21 05:52:37
回答 2查看 37关注 0票数 2

这个问题很像是Pandas pivot or reshape dataframe with NaN的后续问题

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

当前df

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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

我知道,只要对p帧进行current_df整形,我就可以进行df.interpolate()。重塑是问题所在。

注意:label p >= label v表示标签p将始终包含所有帧,但v可能会丢失帧

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-21 06:04:02

您可以像上一个问题中那样重塑dropna,只是现在需要指定只删除空列,然后进行插值:

代码语言:javascript
运行
复制
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]

输出:

代码语言:javascript
运行
复制
       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
票数 2
EN

Stack Overflow用户

发布于 2020-11-21 06:04:45

更改dropna删除问题

代码语言:javascript
运行
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64937425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档