首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择某些列,使用具有非-na值的列的平均值填充这些列中缺少的值。

选择某些列,使用具有非-na值的列的平均值填充这些列中缺少的值。
EN

Stack Overflow用户
提问于 2022-08-26 06:04:30
回答 1查看 27关注 0票数 0

给出如下数据格式的df:

代码语言:javascript
复制
         date      value        pred1        pred2        pred3
0   2021-9-19  3613.9663          NaN          NaN          NaN
1   2021-9-26  3613.0673          NaN          NaN          NaN
2   2021-10-3  3568.1668          NaN          NaN          NaN
3  2021-10-10  3592.1666  3631.411799          NaN          NaN
4  2021-10-17  3572.3662  3637.792491  3677.656329          NaN
5  2021-10-24  3582.6036  3678.800911  3707.926324  3712.669694
6  2021-10-31  3547.3361  3731.336899  3735.695071  3733.021293
7   2021-11-7  3491.5677  3749.422639  3743.507496          NaN
8  2021-11-14  3539.1002  3737.851787          NaN          NaN
9  2021-11-21  3560.3734          NaN          NaN          NaN

假设对于列pred1pred2pred3,除了所有这些列都是NaN,如果它有一个non-null值,我将用这个值填充其他列,如果它有两个或多个non-null值,我将使用non-null值的平均值来填充其他列的空值。

例如,对于日期为2021-10-10的行,我将使用pred1的值填充pred2pred3;对于具有日期2021-10-17的行,在这一天将填充平均为pred1pred2pred3;同样的逻辑将应用于2021-11-72021-11-14

预期结果:

代码语言:javascript
复制
         date      value        pred1        pred2        pred3
0   2021-9-19  3613.9663          NaN          NaN          NaN
1   2021-9-26  3613.0673          NaN          NaN          NaN
2   2021-10-3  3568.1668          NaN          NaN          NaN
3  2021-10-10  3592.1666  3631.411799  3631.411799  3631.411799
4  2021-10-17  3572.3662  3637.792491  3677.656329  3657.724410
5  2021-10-24  3582.6036  3678.800911  3707.926324  3712.669694
6  2021-10-31  3547.3361  3731.336899  3735.695071  3733.021293
7   2021-11-7  3491.5677  3749.422639  3743.507496     2.957571
8  2021-11-14  3539.1002  3737.851787  3737.851787  3737.851787
9  2021-11-21  3560.3734          NaN          NaN          NaN

有人能帮忙解决这个问题吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-26 06:29:22

代码语言:javascript
复制
df.iloc[:,2:].apply(lambda x: x.fillna(x.mean()), axis = 1)
 
         pred1        pred2        pred3
0          NaN          NaN          NaN
1          NaN          NaN          NaN
2          NaN          NaN          NaN
3  3631.411799  3631.411799  3631.411799
4  3637.792491  3677.656329  3657.724410
5  3678.800911  3707.926324  3712.669694
6  3731.336899  3735.695071  3733.021293
7  3749.422639  3743.507496  3746.465068
8  3737.851787  3737.851787  3737.851787
9          NaN          NaN          NaN
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73496690

复制
相关文章

相似问题

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