for循环中的递增计数器
Incrementing counter within for loop
我在 for 循环中正确递增计数器变量时遇到问题。
我有一个名为 flag
的变量,我想根据 flag
.
中的值创建一个名为 num
的新变量
输入:
'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值,而是一列字符串,我建议你改一下,或者把test改成df['num'] = (df['flag'] == 'FALSE').cumsum()
这是您在更正问题中的代码,但 Maarten Fabré 的解决方案更好:
def num(z):
i = 0
numcol = []
for flag in z:
if not flag:
i += 1
numcol.append(i)
return numcol
df['num'] = num(df['flag'])
起初我想用一个生成器来做,但我没有让它与 pandas 数据框一起工作。
我在 for 循环中正确递增计数器变量时遇到问题。
我有一个名为 flag
的变量,我想根据 flag
.
num
的新变量
输入:
'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值,而是一列字符串,我建议你改一下,或者把test改成df['num'] = (df['flag'] == 'FALSE').cumsum()
这是您在更正问题中的代码,但 Maarten Fabré 的解决方案更好:
def num(z):
i = 0
numcol = []
for flag in z:
if not flag:
i += 1
numcol.append(i)
return numcol
df['num'] = num(df['flag'])
起初我想用一个生成器来做,但我没有让它与 pandas 数据框一起工作。