То, что вы ищете:
import numpy as np
df.groupby((df.E != df.E.shift(1)).cumsum()).filter(lambda x: np.size(x.E) >= 2)
# or
df[df.groupby((df.E != df.E.shift(1)).cumsum()).E.transform('size') >= 2]
Выход:
A B C D E
7 1 2.489 8.586 10.890 2
8 1 2.279 8.460 10.945 2
9 1 2.296 8.559 11.000 2
10 2 2.275 8.620 11.055 2
11 2 2.539 8.528 11.110 2
51 3 3.359 5.910 10.230 1
52 3 3.416 5.936 10.285 1
Пояснение:
Вы хотите хранить все записи там, где есть последовательная группа в E
, размер которой больше 2.
Первая часть (df.E != df.E.shift(1)).cumsum()
позволяет помечать последовательные группы в столбце E
, а затем группировать по этой метке и фильтровать DataFrame
, сохраняя только группы, размер которых равен 2 или более.