У меня есть следующий DataFrame:
df = pd.DataFrame({'index':[0,1,2,3,4,5,6,7,8,9,10], 'X':[0,0,1,1,0,0,1,1,1,0,0]})
df.set_index('index', inplace = True)
X
index
0 0
1 0
2 1
3 1
4 0
5 0
6 1
7 1
8 1
9 0
10 0
Мне нужно вернуть список кортежей, показывающий значение индекса для первого и последнего экземпляров 1 для каждой последовательности 1 (извините, если этозапутанный).т.е.
Want:
[(2,3), (6,8)]
Первый экземпляр первого 1 происходит в точке индекса 2, затем последний 1 в этой последовательности встречается в точке индекса 3. Следующий 1 встречается в индексеточка 6, а последняя 1 в этой последовательности встречается в точке индекса 8.
То, что я пробовал:
Я могу получить первый, используя функцию argmax numpy.то есть
x1 = np.argmax(df.values)
y1 = np.argmin(df.values[x1:])
(x1,2 + y1 - 1)
Что даст мне первый кортеж, но итерация по нему кажется грязной, и я чувствую, что есть лучший способ.