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