私はこのような小さなアルゴリズムを持っています。 whileループは進めることができません。i = 1
私はimport pandas as pd
raw = pd.read_csv
i = 0
T = pd.DataFrame(columns = ['Values'])
singleT = raw.mean() + raw.std()
T = T.append(singleT, ignore_index=True)
if i == 0:
raw = raw.where(raw<T.iloc[i,:])
i += 1
while True:
singleT = raw.mean() + raw.std()
T = T.append(singleT, ignore_index=True)
if T.iloc[i,:].values == T.iloc[i-1,:].values:
break
background = T.iloc[i,:].values
else:
raw = raw.where(raw<T.iloc[i,:])
i += 1
print ('iteration{:02}'.format(i))
しかしPythonでそれを符号化され、ループはパスI = 1を取得し、繰り返し続けるなかった、全T配列は、値I = 1で満たされています。私は自分のコードにいくつかの変更を加えましたが、まったく動作しませんでした。
この問題を解決する方法についてアドバイスをいただければ幸いです! はあなたに非常に多くの
編集をありがとう:あなたたちはelse
がwhile
に属していることを確認するために提案されているよう私は、最後の4行のために一つのタブを挿入したが、今では、構文、無効なエラー
EDIT2があります。ここにありますこの問題の正しいコードは、無限ループに入りません。
i = 0
T = pd.DataFrame(columns = ['Pulse counts'])
singleT = raw.mean() + raw.std()
T = T.append(singleT, ignore_index=True)
if i == 0:
filtered = raw.where(raw<T.iloc[i,:])
i += 1
while True:
singleT = filtered.mean() + filtered.std()
T = T.append(singleT, ignore_index=True)
if T.iloc[i,:].values == T.iloc[i-1,:].values or T.iloc[i-1,:].values == 0:
background = T.iloc[i-1,:].values
break
else:
filtered = filtered.where(filtered<T.iloc[i,:])
print ('iteration{}'.format(i))
i += 1
壊れたインデントが本当の問題を隠すことができます。それを修正してください。 –
'i'はどこで初期化されていますか?これは[mcve]ではありません –
ええ、とても申し訳ありません、私は間違ったコードを貼り付けました。とはい、それは他の人の間違ったインデントによって失敗しましたが、私はまだそれを修正することができませんでした –