如何计算列表中值块的大小?

Non*_*per 6 python arrays numpy list pandas

我有一个这样的清单:

list_1 = [0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1]
Run Code Online (Sandbox Code Playgroud)

如何计算此列表中1和的值块的大小0?结果列表将如下所示:

list_2 = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 1, 1]
Run Code Online (Sandbox Code Playgroud)

WeN*_*Ben 6

cumsumdiff然后尝试transform count

s = pd.Series(list_1)
s.groupby(s.diff().ne(0).cumsum()).transform('count')
Out[91]: 
0     1
1     2
2     2
3     3
4     3
5     3
6     4
7     4
8     4
9     4
10    1
11    1
dtype: int64
Run Code Online (Sandbox Code Playgroud)