У меня есть небольшой фрейм данных со значениями 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)
Я хочу вернуть индекс последнего последовательного значения True, считая с 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
, поскольку в каждой серии могут быть другие значения True, которые не являются последовательными, начиная с0.0.
В этом вопросе есть несколько инновационных решений с использованием методов с массивными массивами, но они выглядят довольно сложными.