我有一个小数据框,其中bool值表示三个参数的最佳范围。
在调试器中如下所示:
(Pdb) p insensistive_ranges.loc[-0.2:0.2]
P Q n
-0.20 False True False
-0.16 False True False
-0.12 True True False
-0.08 True True False
-0.04 True False False
0.00 True True True
0.04 False False True
0.08 False True True
0.12 False True False
0.16 False True False
(当指数==0.00时为最佳值)
我想返回最后一个连续真值的索引,从0.0开始向上计数,也从0.0开始向下计数。换句话说,这是:
(Pdb) p highest
P 0.00
Q 0.00
n 0.08
(Pdb) p lowest
P -0.12
Q 0.00
n 0.00
最接近的是这个,但它在每个方向上都走得太远了一步(找到第一个非真值而不是最后一个连续的真值):
(Pdb) p insensistive_ranges.loc[0.0:delta].idxmin()
P 0.04
Q 0.04
n 0.12
(Pdb) p insensistive_ranges.loc[0.0:-delta:-1].idxmin()
P -0.16
Q -0.04
n -0.04
有什么想法吗?
(请注意,您不能从
insensistive_ranges
因为从0.0开始,每个序列中可能有其他不连续的真值。
This question
有一些创新的解决方案与numpy数组方法,但他们看起来相当复杂。