在for循环中递增计数器

nak*_*226 1 python counter for-loop pandas

我在for循环中正确递增计数器变量时遇到问题.

我有一个名为的变量flag,我想创建一个num基于值中调用的新变量flag.

输入:

'flag'
FALSE
TRUE
TRUE
TRUE
FALSE
TRUE
FALSE
TRUE
TRUE
Run Code Online (Sandbox Code Playgroud)

期望的输出:

'flag' 'num'
FALSE   1
TRUE    1
TRUE    1
TRUE    1
FALSE   2
TRUE    2
FALSE   3
TRUE    3
TRUE    3
Run Code Online (Sandbox Code Playgroud)

目标是将num计数器设置为1并将该计数器保持为1,直到列中False出现另一个实例flag.这将一直持续到df结束.

我的代码:

def num(z):  
    i = 0
    for x in range (0,len(z)):
        if z['flg'] == False:
            return i + 1
        else:
            return i

df['num']=df.apply(num, axis=1)
Run Code Online (Sandbox Code Playgroud)

我试过在很多地方增加I计数器,但没有运气......

Maa*_*bré 8

df['num'] = (~df['flag']).cumsum()
Run Code Online (Sandbox Code Playgroud)

使用这样的事实False = 0,True == 1

如果df['num']不是True和False值的列,而是一列字符串,我建议您更改它,或将测试更改为df['num'] = (df['flag'] == 'FALSE').cumsum()