Всего пара строк с использованием pandas
с использованием индекса pd.Series.diff
:
# Difference between consecutive values. A -1 is an 'end', a 1 is a 'start'
df_diff = df.diff()
df_res = pd.DataFrame()
df_res['start'] = df_diff[df_diff==1].index
df_res['end'] = df_diff[df_diff==-1].index -1
# Result
df_res
# start end
#0 1 3
#1 6 7
#2 9 9
#3 12 13
Примечание: df
, созданный с использованием:
import pandas as pd
df = pd.Series({0:0,1:1,2:1,3:1,4:0,5:0,6:1,7:1,8:0,9:1,10:0,11:0,12:1,13:1,14:0})