0
Pythonを使用して新しいこと:異なるデータを使用してデータを正規化しようとしていますが、私にエラーを与えてください:ZeroDivisionErrorゼロ。ループを実行するときにバイパスエラーが0で除算される
正規化された値を計算するために、1つのデータフレームmergedfsとループスルー列があります。
b = 0
w = (len(files))+1 #number depending on how many csv files I have. This will determine which columns index I will use.
while b < len(files):
b += 1
if b == 1:
w += 1
mergedfs.insert(len(files)+1+b, 'NHAF R{}'.format(b), np.log10((((mergedfs.ix[:,b]/mergedfs.ix[:,w])/106)/((mergedfs.ix[:,b].sum()/(mergedfs.ix[:,w].sum())/106))/sum(((mergedfs.ix[:,b]/mergedfs.ix[:,w])/106)/((mergedfs.ix[:,b].sum()/(mergedfs.ix[:,w].sum())/106))))))
else:
w += 2
mergedfs.insert(len(files)+1+b, 'NHAF R{}'.format(b), np.log10(((mergedfs.ix[:,b]/mergedfs.ix[:,w])/106)/((mergedfs.ix[:,b].sum()/(mergedfs.ix[:,w].sum())/106))/sum(((mergedfs.ix[:,b]/mergedfs.ix[:,w])/106)/((mergedfs.ix[:,b].sum()/(mergedfs.ix[:,w].sum())/106)))))
ZeroDivisionErrorは、通常ゼロであることが多いためです。 mergedfs.ix [:、b] AND mergedfs.ix [:、b]は0に等しくなります。
これを回避する方法はありますか?
I have tried np.log10((((mergedfs.ix[:,b]/mergedfs.ix[:,w])/106)/((mergedfs.ix[:,b].sum()/(mergedfs.ix[:,w].sum())/106))/sum(((mergedfs.ix[:,b]/mergedfs.ix[:,w])/106)/((mergedfs.ix[:,b].sum()/(mergedfs.ix[:,w].sum())/106)))).where(mergedfs.ix[:,b] != 0)
しかし、成功しません。
私はかなりの間stackoverflowを検索しており、ほとんどが自分のコードで動作しませんでした。
私はこの問題を解決するために少し私を導くことができれば多くありがとう。
乾杯!
はあなたが分母として0を持っている場合に発生することが何を期待していますか? 'try'を使ってエラーをキャッチすることができますが、使用する置換値を指定する必要があります。 – Carcigenicate
こんにちは@Carcigenicate私はちょうど彼らがゼロに等しい場合は、スキップしたいが、私はプロセスを停止したくない。 – Flora
例外をキャッチし、例外ブロックで何が行われる必要があるかを示します。 https://docs.python.org/3/tutorial/errors.html – skrubber