使用比较运算符处理条件语句中的 NA 值

我使用以下条件语句来定义metric

metric = "FAIL" if ((self.Mean <= -20.0) & (self.area_ratio>= 0.8)) else "PASS"

有时,self.area_ratio =“NA”。

这当然给了我错误: TypeError: '>=' notsupported Between Examples of 'str' and 'float'.

如何保持此条件语句格式来定义metric,同时支持 self.area_ratio 可以等于“NA”或可以等于整数?如果self.area_ratio =“NA”,则度量应等于“PASS”。


手掌心
浏览 116回答 3
3回答

偶然的你

or如果你使用而不是 ,结果会更容易and。&nbsp;&用于位操作,所以这是您的主要问题。假设这是您将获得的唯一两个值(浮点数或字符串“NA”),您可以这样做:metric&nbsp;=&nbsp;"PASS"&nbsp;if&nbsp;self.area_ratio&nbsp;==&nbsp;"NA"&nbsp;or&nbsp;self.area_ratio&nbsp;>=&nbsp;0.8&nbsp;else&nbsp;"FAIL"这不是一种超级可靠的方法,但由于您已经在同一变量中混合类型......

繁星淼淼

这就是您所需要的。self.area_ratio如果不是数字,您将抛出异常。所以你只需捕获该异常并设置metric为PASS当你这样做时。try:&nbsp; &nbsp; metric = "FAIL" if (self.area_ratio >= 0.8) else "PASS"except TypeError as ex:&nbsp; &nbsp; metric = "PASS"如果您想对其他非数字值执行不同的操作,则可以在子句中添加更多逻辑except来处理非数字值之间的区分行为。如果您确定这NA是您将看到的唯一非数字值,则可以将其添加到条件语句中,如下所示:metric = "PASS" if self.area_ratio == 'NA' or (self.area_ratio < 0.8) else "FAIL"self.area_ratio但是如果有任何其他非数字值,这将引发您不处理的异常。

慕田峪9158850

&nbsp;metric&nbsp;=&nbsp;"PASS"&nbsp;if&nbsp;isinstance(self.area_ratio,&nbsp;str)&nbsp;else&nbsp;("FAIL"&nbsp;if&nbsp;((self.area_ratio&nbsp;!=&nbsp;"NA")&nbsp;&&nbsp;(self.area_ratio>=&nbsp;0.8))&nbsp;else&nbsp;"PASS")只要每个字符串都通过,也可以工作,但我不建议在一行中进行。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python