[英]How to transform missing values through a multiplication of a "K" factor starting at the last valid value?
我的问题是从出现在缺失值“NaN”之前的第一个有效数字开始应用乘法因子K=0.5
,并继续将该因子 K 应用于计算值,直到该期间的最后一个缺失值 NaN。
表A:
Bird1 Bird2 Bird3
100 50 200
50 40 100
40 40 80
NaN 80 200
NaN 50 NaN
NaN 90 NaN
100 12 40
结果应如下表所示。 如何在 python 中实现此代码?
表 B:
Bird1 Bird2 Bird3
100 50 200
50 40 100
40 40 80
20 80 200
10 50 100
5 90 50
100 12 40
使用df.interpolate()
命令不合适,因为它还使用缺失值 NaN 之后的值。 我只想在缺失值 NaN 之前开始并应用于第一个值的常量K
您可以编写自定义插值 function:
def interp(s, K=0.5):
# group by non-NA then NA
g = s.groupby(s.notna().cumsum())
# get decreasing factors
factor = K**g.cumcount()
# interpolate
return g.transform('first').mul(factor)
out = df.apply(interp)
# df.apply(interp, K=0.5)
output:
Bird1 Bird2 Bird3
0 100.0 50.0 200.0
1 50.0 40.0 100.0
2 40.0 40.0 80.0
3 20.0 80.0 200.0
4 10.0 50.0 100.0
5 5.0 90.0 50.0
6 100.0 12.0 40.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.