python什么元素为真_python – 一个系列的真值是不明确的.使用a.empty,a.bool(),a.item(),a.any()或a.all()...

or或者python语句需要真值.对于熊猫,这些被认为是含糊的,所以你应该使用“bitwise”| (或)或& (和)操作:

result = result[(result['var']>0.25) | (result['var']

对于这些类型的数据结构来说,这些都是过载的,以产生元素或(或).

只是为了在这个语句中增加一些解释:

当你想得到一个pandas.Series的bool时,抛出异常:

>>> import pandas as pd

>>> x = pd.Series([1])

>>> bool(x)

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

你打的是一个运算符将操作数隐式转换为bool的地方(你使用过但是也会发生在和,如果和同时):

>>> x or x

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

>>> x and x

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

>>> if x:

... print('fun')

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

>>> while x:

... print('fun')

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

除了这4个语句,还有几个python函数可以隐藏一些bool调用(像任何一个,all,filter,…)这些通常对于pandas.Series是没有问题的,但为了完整,我想提到这些.

在你的情况下,例外并不真正有用,因为它没有提到正确的选择.对于和和/或您可以使用(如果您想要元素比较):

>>> import numpy as np

>>> np.logical_or(x, y)

或者简单的操作符:

>>> x | y

>>> np.logical_and(x, y)

或简单地操作符:

>>> x & y

如果您使用的是运算符,那么请确保由于the operator precedence而正确设置了圆括号.

在Exception中提到的备选方案更适合在执行if或while时遇到它.我稍后会解释一下:

>如果你想检查你的系列是否为空:

>>> x = pd.Series([])

>>> x.empty

True

>>> x = pd.Series([1])

>>> x.empty

False

如果没有明确的布尔解释,Python通常将容器的长度(如list,tuple,…)解释为true-value.所以,如果你想要像类似Python的检查,你可以做:如果x.size或如果不是x.empty而不是x.

>如果您的系列包含一个且只有一个布尔值:

>>> x = pd.Series([100])

>>> (x > 50).bool()

True

>>> (x < 50).bool()

False

>如果你想检查你的系列的第一个也是唯一的项目(如.bool(),但工作甚至不是布尔内容):

>>> x = pd.Series([100])

>>> x.item()

100

>如果要检查所有或任何项目是否不为零,则不为空或不为false:

>>> x = pd.Series([0, 1, 2])

>>> x.all() # because one element is zero

False

>>> x.any() # because one (or more) elements are non-zero

True

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值