While Loop 不会中断并无限运行 (Python)
While Loop does not break and runs infinitely (Python)
我从时间序列创建了一个数据框(布尔值)(如果值高于 x,则在特定日期为真,如果值低于 x,则为假)。我正在尝试循环进入这个数据框——每当我遇到一个真值时,我都想更新计数器;如果为假,我想中断并打印更新的计数器。
它看起来像这样,但 while 循环不会中断 - 我在这里缺少什么的任何想法?提前致谢
k=0
dataa='2019-11-01'
for index in df_resz[dataa:].iterrows():
while (df_resz.loc[dataa,'bool_resz']==True):
k=k+1
else:
break
print (k)
如果我对你的问题的理解正确,你的目标是迭代数据框列并对 True
值求和,直到找到 False
。如果是:
>>> dict = {'value':[True, True, False, True]}
>>> df = pd.DataFrame(dict)
>>> df
value
0 True
1 True
2 False
3 True
>>> counter = 0
>>> for i, j in df.iterrows():
... if j.value == True:
... counter += 1
... else:
... break
...
>>> counter
2
我先解释一下while循环为什么不中断。你遍历你的数据,在第一个为真的值开始 while 循环,但在 while 循环中这个值不会被更新。因此,在无限更新 k 的同时,您在数据中保持相同的 True 值。
要解决您的问题,只需使用 for 循环和 if 语句:
test = pd.Dataframe({'value':[True, False, True]})
k = 0
for i in test.index():
if test(i) == True:
k += 1
我从时间序列创建了一个数据框(布尔值)(如果值高于 x,则在特定日期为真,如果值低于 x,则为假)。我正在尝试循环进入这个数据框——每当我遇到一个真值时,我都想更新计数器;如果为假,我想中断并打印更新的计数器。 它看起来像这样,但 while 循环不会中断 - 我在这里缺少什么的任何想法?提前致谢
k=0
dataa='2019-11-01'
for index in df_resz[dataa:].iterrows():
while (df_resz.loc[dataa,'bool_resz']==True):
k=k+1
else:
break
print (k)
如果我对你的问题的理解正确,你的目标是迭代数据框列并对 True
值求和,直到找到 False
。如果是:
>>> dict = {'value':[True, True, False, True]}
>>> df = pd.DataFrame(dict)
>>> df
value
0 True
1 True
2 False
3 True
>>> counter = 0
>>> for i, j in df.iterrows():
... if j.value == True:
... counter += 1
... else:
... break
...
>>> counter
2
我先解释一下while循环为什么不中断。你遍历你的数据,在第一个为真的值开始 while 循环,但在 while 循环中这个值不会被更新。因此,在无限更新 k 的同时,您在数据中保持相同的 True 值。
要解决您的问题,只需使用 for 循环和 if 语句:
test = pd.Dataframe({'value':[True, False, True]})
k = 0
for i in test.index():
if test(i) == True:
k += 1