获取包含0作为值的行总和

时间:2019-04-03 19:33:04

标签: python

我想知道如何基于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

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

在下面添加屏幕截图以使用法更清晰 Screenshot