Skip to main content
 首页 » 编程设计

python之for循环中的递增计数器

2025年05月04日12shanyou

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

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

输入:

'flag' 
FALSE 
TRUE 
TRUE 
TRUE 
FALSE 
TRUE 
FALSE 
TRUE 
TRUE 

期望的输出:

'flag' 'num' 
FALSE   1 
TRUE    1 
TRUE    1 
TRUE    1 
FALSE   2 
TRUE    2 
FALSE   3 
TRUE    3 
TRUE    3 

目标是将 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) 

我已经尝试在许多地方增加 I 计数器,但没有成功......

请您参考如下方法:

df['num'] = (~df['flag']).cumsum() 

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

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