给出如下数据格式的df:
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假设对于列pred1、pred2和pred3,除了所有这些列都是NaN,如果它有一个non-null值,我将用这个值填充其他列,如果它有两个或多个non-null值,我将使用non-null值的平均值来填充其他列的空值。
例如,对于日期为2021-10-10的行,我将使用pred1的值填充pred2和pred3;对于具有日期2021-10-17的行,在这一天将填充平均为pred1和pred2的pred3;同样的逻辑将应用于2021-11-7和2021-11-14。
预期结果:
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有人能帮忙解决这个问题吗?谢谢。
发布于 2022-08-26 06:29:22
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 NaNhttps://stackoverflow.com/questions/73496690
复制相似问题