我想知道如何基于Python创建以下问题的源代码。
我有一个包含此列的数据框:
Column X
1
0
0
0
1
1
0
0
1
我想创建一个列表b来计数连续0值的总和,以获得类似的结果:
List X
1
3
3
3
1
1
2
2
1
答案 0 :(得分:3)
如果我正确理解了您的问题,则希望将所有零替换为当前条纹中的连续零个数,但不要更改非零个数。所以
1 0 0 0 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0
成为
1 4 4 4 4 1 1 1 1 2 2 1 1 1 5 5 5 5 5
为此,假设您的输入列(熊猫系列)称为x
,这应该可以工作。
result = []
i = 0
while i < len(x):
if x[i] != 0:
result.append(x[i])
i += 1
else:
# See how many times zero occurs in a row
j = i
n_zeros = 0
while j < len(x) and x[j] == 0:
n_zeros += 1
j += 1
result.extend([n_zeros] * n_zeros)
i += n_zeros
result