Установочный кадр данных:
df = pd.DataFrame({'Name': ['Name1', 'Name2', 'Name3', 'Name4', 'Name5', 'Name6'],
'ID': ['A', 'B', 'C', 'D', 'E', 'F'],
'Level': [1, 2, 3, 1, 2, 1]})
Найдите местоположение новых групп (новый уровень 1), используя сдвиг серии, отметьте 1, затем выполните cumsum.
grp_markers = (df.Level - df.Level.shift()).fillna(-1).values <= 0
df['grp'] = grp_markers.cumsum()
Найти подмножествакак это:
df[df.grp == 2]
Name ID Level grp
3 Name4 D 1 2
4 Name5 E 2 2
Теперь вы также можете делать групповые вещи с помощью столбца grp ...