Я хочу отбросить и сосчитать дубликаты в столбце val , когда val равно 1 .
Затем установить start - первая строка и end - последняя строка последовательных дубликатов.
df = pd.DataFrame()
df['start'] = [1, 2, 3, 4, 5, 6, 18, 30, 31]
df['end'] = [2, 3, 4, 5, 6, 18, 30, 31, 32]
df['val'] = [1 , 1, 1, 1, 1, 12, 12, 1, 1]
df
start end val
0 1 2 1
1 2 3 1
2 3 4 1
3 4 5 1
4 5 6 1
5 6 18 12
6 18 30 12
7 30 31 1
8 31 32 1
Ожидаемый результат
start end val
0 1 6 5
1 6 18 12
2 18 30 12
3 30 32 2
Я пытался. df[~((df.val==1) & (df.val == df.val.shift(1)) & (df.val == df.val.shift(-1)))]
start end val
0 1 2 1
4 5 6 1
5 6 18 12
6 18 30 12
7 30 31 1
8 31 32 1
но я не могу понять, как завершить мой ожидаемый результат, любое предложение?