本文共 1125 字,大约阅读时间需要 3 分钟。
官方文档中提到的一个pandas错误示例
>>> if pd.Series([False, True, False]): ... print("I was true")产生了一个不 обычно的错误信息
Traceback ... ValueError: The truth value of an array is ambiguous. Use a.empty, a.any() or a.all().错误原因分析
if后跟的条件判断涉及到了pandas Series对象的布尔判断。由于Series对象的结果具有数组结构,含有True和False值
这种情况表明,无论判断结果是True还是False,都存在数据中的真值或者假值,从而导致逻辑判断的不确定性
解决方法
if pd.Series([False, True, False]) is not None: print('i am not none')或使用等价的方法进行布尔判断
if pd.Series([False, True, False]).any(): print('any of the series is true') if pd.Series([True, False, True]).all(): print('all values are true')对于单元素对象的布尔判断,可以直接使用bool()方法
In [11]: pd.Series([True]).bool() Out[11]: True In [12]: pd.Series([False]).bool() Out[12]: False In [13]: pd.DataFrame([[True]]).bool() Out[13]: True In [14]: pd.DataFrame([[False]]).bool() Out[14]: False
转载地址:http://psziz.baihongyu.com/