While循环不会中断并无限运行(Python)

时间:2019-11-21 11:34:31

标签: python pandas loops while-loop break

我从一个时间序列创建了一个数据框(布尔值)(如果值大于x,则在特定日期为true;如果值小于x,则为false)。我试图循环进入此数据帧-每当遇到真值时,我都想更新计数器;如果为假,我想中断并打印更新的计数器。 看起来像这样,但是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)

2 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,那么您的目标是迭代一个数据框列并求和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

答案 1 :(得分:0)

首先让我解释一下while循环为什么不中断。您遍历数据,在第一个为true的值处启动while循环,但是在while循环中,此值将不会更新。因此,在无限次更新k时,数据中的True值保持不变。

要解决您的问题,只需使用for循环和if语句:

myproject 
  - my app
  - docs
     - conf.py
     - Makefile
     - index.rst
       ...
  - envs
  - compose
  - ...