其中值为0,我正在对其进行除法,这似乎会抛出一个错误。如何避免此错误
wt pred wt remarks
0 14 Anomaly
0 20 Anomaly
25 30 Anomaly
22 21 Anomaly
21 102 Anomaly
def valuation_formula(x,y):
if float(abs(x-y)/y*100) > 25.0:
return "Anomaly"
else :
return "Pass"
try:
df_Wt['Weight_Remarks'] = df_Wt.apply(lambda row:
valuation_formula(row['Predicted Weight'], row['Weight']), axis=1)
except ZeroDivisionError:
df_Wt['Weight_Remarks'] = "Anomaly"新列中只有“异常”,如何更正上面的代码?
预期产出
wt pred wt remarks
0 14 Anomaly
0 20 Anomaly
25 30 Pass
22 21 Pass
21 102 Anomaly发布于 2019-08-16 08:29:10
df['remarks'] = np.where(((abs(df['pred wt']-df['wt']))/df['wt']).gt(0.25), "Weight Anomaly", 'Pass')发布于 2019-08-16 08:11:42
使用numpy.where
import numpy as np
df['new_remarks'] = np.where(df['wt'].ne(0), df['pred wt']/df['wt'], 'Anomaly')
print(df)输出:
wt pred wt remarks new_remarks
0 0 14 Anomaly Anomaly
1 0 20 Anomaly Anomaly
2 25 30 Anomaly 1.2
3 22 21 Anomaly 0.9545454545454546发布于 2019-08-16 08:46:30
试试这段代码
df['remarks']= np.where(df.wt.div(df.pred,fill_value=1).eq(0),'Anamoly',np.where(((abs(df['pred']-df['wt']))/df['wt']).lt(0.25), "Weight Anomaly", 'Pass'))我认为你输入的输出与函数不匹配。至少其中一个值应该是“体重分析”。调整lt(0.25)以获得所需的结果。它代表“小于”,您可以将其更改为“gt”(大于)以满足您的需要。
https://stackoverflow.com/questions/57521021
复制相似问题