Попробуйте:
row = [10,10,10,10,10,10,10,10,10,11,11,11,11,11,10,10,10,10,12,12,12,12,12,11,11,11,11,12,12,12,12,10]
sr = pd.Series(row, name = "x")
sr[sr.groupby(sr.shift(-1).bfill(0).ne(sr)).transform('cumcount')==1].value_counts()
Вывод:
10 3
12 2
11 2
Первый столбец - значение x
, второй - количество последовательностей.
Более компактный и быстрый путь:
from itertools import groupby
pd.Series([k for k, g in groupby(row)]).value_counts()
Другое решение:
np.unique([k for k, g in groupby(row)], return_counts=True)
Результат:
(array([10, 11, 12]), array([3, 2, 2], dtype=int64))
Альтернативно использовать np.bincount
:
np.bincount([k for k, g in groupby(row)])
Но вывод будет немного другим:
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 2], dtype=int64)