首页 > 解决方案 > 如何计算列表中值块的大小?

问题描述

我有一个这样的列表:

list_1 = [0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1]

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

list_2 = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 1, 1]

标签: pythonarrayspandaslistnumpy

解决方案


尝试cumsumdiffthentransform 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

推荐阅读