这是一个小演示,它说明了为什么发生这种情况:
In [131]: df = pd.Dataframe(np.random.randint(0,20,(5,2)), columns=list('AB'))In [132]: dfOut[132]: A B0 3 111 0 162 16 13 2 114 18 15In [133]: res = df['A'] > 10In [134]: resOut[134]:0 False1 False2 True3 False4 TrueName: A, dtype: bool
当我们尝试检查是否这样的系列
True-熊猫不知道该怎么做时:
In [135]: if res: ...: print(df) ...:---------------------------------------------------------------------------ValueError Traceback (most recent call last)...skipped...ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
解决方法:
我们可以决定如何处理布尔值的系列-比如
if应该返回
True,如果 所有 的值是
True:
In [136]: res.all()Out[136]: False
或当 至少一个 值为True时:
In [137]: res.any()Out[137]: TrueIn [138]: if res.any(): ...: print(df) ...: A B0 3 111 0 162 16 13 2 114 18 15
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)