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



我已经从时间序列创建了一个数据帧(布尔值(,该时间序列(如果值在x以上,则在特定日期为true,如果值在以下,则为false(。我正试图循环到这个数据帧中——每当我遇到一个真值时,我都想更新计数器;如果为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)

如果我正确理解您的问题,那么您的目标是迭代一个数据帧列并求和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循环不中断的原因。在数据中循环,当第一个值为true时,启动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

最新更新