IIU C, нужные вам группы создаются из Predict, где diff
между следующими строками не равно 0. Таким образом, вы можете создать столбец:
data_ = df.sort_values('Age')
data_['gr'] = data_['Predict'].diff().ne(0).cumsum()
print (data_)
Index Age Predict gr
5 5 17 0 1
0 0 23 0 1
6 6 29 1 2
1 1 39 0 3
3 3 41 1 4
4 4 50 0 5
2 2 70 0 5
Или, если хотите чтобы разделить данные, а не создавать столбец группы, можно создать словарь, содержащий каждую группу
data_ = df.sort_values('Age')
d = {i: dfg
for i,(_, dfg) in enumerate(data_.groupby(data_['Predict'].diff().ne(0).cumsum()),1)}
print (d[1])
Index Age Predict
5 5 17 0
0 0 23 0