- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想使用 or
条件过滤数据帧,以保留特定列值超出 [-0.25, 0.25]
范围的行。我尝试过:
df = df[(df['col'] < -0.25) or (df['col'] > 0.25)]
但我收到错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
最佳答案
or
和 and
Python 语句需要真值。对于 pandas,这些被认为是不明确的,因此您应该使用“按位”|
(或)或 &
(与)运算:
df = df[(df['col'] < -0.25) | (df['col'] > 0.25)]
这些类型的数据结构被重载,以产生按元素的 or
或 and
。
只是对此声明添加更多解释:
当你想获取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
的地方(您使用了or
,但它也发生在and
、if
和 while
):
>>> 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().
除了这四个语句之外,还有几个 Python 函数隐藏了一些 bool
调用(例如 any
、all
、filter
,...)。这些通常对于 pandas.Series
来说不会有问题,但为了完整起见,我想提及这些。
就您而言,异常(exception)并没有真正的帮助,因为它没有提及正确的替代方案。对于and
和or
,如果你想要逐元素比较,你可以使用:
>>> import numpy as np
>>> np.logical_or(x, y)
或简单的|
运算符:
>>> x | y
>>> np.logical_and(x, y)
或简单的&
运算符:
>>> x & y
如果您使用运算符,请务必正确设置括号,因为 operator precedence .
有several logical NumPy functions 应该适用于pandas.Series
。
如果您在执行 if
或 while
时遇到异常,则异常中提到的替代方案更适合。我将简要解释其中每一个:
如果您想检查您的系列是否为空:
>>> x = pd.Series([])
>>> x.empty
True
>>> x = pd.Series([1])
>>> x.empty
False
Python 通常会将容器的 len
gth(例如 list
、tuple
...)解释为真值(如果它没有)显式 boolean 解释。因此,如果您想要类似 Python 的检查,您可以执行以下操作:if x.size
或 if not x.empty
而不是 if x
。
如果您的系列
包含一个且仅有一个 boolean 值:
>>> x = pd.Series([100])
>>> (x > 50).bool()
True
>>> (x < 50).bool()
False
如果您想检查系列中的第一个且唯一的项目(例如 .bool()
,但它甚至适用于非 boolean 内容) :
>>> 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
关于python - 系列的真值是不明确的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59981643/
我想获取百分比值大于 90% 的所有项,但该部分的顺序无关紧要。这是一个例子: Person Score Location 1 91 US 2
在大多数语言中,包括 Python,变量的真实值可以在条件表达式中隐式使用,即: is_selected = True If is_selected: #do some
是否可以将 hibernate 设置为将 -1 而不是 1 作为数据库中 boolean 字段的真值?我需要 -1 来保持与其他 Delphi 程序的兼容性。 最佳答案 @Type(type="com
使用文档运行 rasa_core 示例 › python3 -m rasa_core.run -d models/dialogue -u models/nlu/default/current 并在对话
如果我的对象包含一个具有真值的键,我真的很困惑如何返回一个简单的真/假。我不想返回键或值本身,只是断言它确实包含一个真值。 例如 var fruits = { apples: false, orang
我正在尝试编写一个 JUnit 测试,它检查接收到的 JSON 的值。我使用 jsonPath 访问 JSON 中的这些值。我想检查一个值是否为true。对于简单的 jsonPaths,它对我有用,但
我正在尝试检查 Angular HTML 中的 bool 值真实性,但得到了一个奇怪的结果。看完this SO post我以为我明白发生了什么。我希望能够使用 === 运算符,但正如我下面的最后一个示
在 REST Web 服务中,POST JSON 正文如下所示: { "printRequest" : { "printName" : "XYZ", "enab
我是一名优秀的程序员,十分优秀!