ValueError: The truth value of an array with more than one element is ambiguous

报错如下:

ValueError: The truth value of an array with more than one element is ambiguous_第1张图片

思考:

定位错误在 if 判断这一块,但是,仍然很困惑为什么会报这个错误,于是我分别打印 data[code] 以及 stock_qua
ValueError: The truth value of an array with more than one element is ambiguous_第2张图片
这样也看不出来有什么问题,于是想阿想。我们将复杂的问题简单化。

现在 data[code] 是一个 Series 数组,而 stock_qua 是一个数值。那也就相当于一个数组跟一个标量比较,得到的就是一个元素为布尔的数组。如下:
ValueError: The truth value of an array with more than one element is ambiguous_第3张图片
那第二点需要明确的是,if 判断的表达式为:if condition is True:pass

也就是说,当满足条件时,就执行该条件内部的代码。但是如果我们的条件返回的为一个数组,数组里面既有 True 、又有 False 的时候,就会使 if 条件判断不知道如何抉择,所以才抛出该异常

解决:

解决该问题的方法就是需要得到一个确切的结果,比如 True 或者 False。那我们就需要通过 any 或者 all来实现

当数组中有一个为 True 则为 True,此时我们使用 any() 。当数组中有一个为 False 则为 False,此时我们使用 all()
ValueError: The truth value of an array with more than one element is ambiguous_第4张图片
再结合 if 条件判断来使用,就可以啦~

你可能感兴趣的:(少女的技术文章)