在用or条件过滤我的结果数据帧时遇到问题。我希望我的结果df提取var大于0.25且小于-0.25的所有列值。
下面的逻辑为我提供了一个模糊的真实值,但是当我将此过滤分为两个单独的操作时,它可以工作。这是怎么回事 不知道在哪里使用建议a.empty(), a.bool(), a.item(),a.any() or a.all()
。
result = result[(result['var']>0.25) or (result['var']<-0.25)]
在or
和and
python语句需要truth
-值。因为pandas
这些被认为是模棱两可的,所以您应该使用“按位” |
(或)或&
(和)操作:
result = result[(result['var']>0.25) | (result['var']<-0.25)]
对于此类数据结构,它们会重载以生成元素级or(或and)。
只是为该语句添加更多解释:
当您想获取的时bool
,将引发异常pandas.Series
:
>>> 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().
除了这些4个语句有一些隐藏某几个Python函数bool调用(如any,all,filter,…),这些都是通常不会有问题的pandas.Series,但出于完整性我想提一提这些。
在您的情况下,该异常并没有真正的帮助,因为它没有提到正确的替代方法。对于and和,or您可以使用(如果需要逐元素比较):
numpy.logical_or:
>>> import numpy as np
>>> np.logical_or(x, y)
或简单地|算:
>>> x | y
numpy.logical_and:
>>> np.logical_and(x, y)
或简单地&算:
>>> x & y
如果您使用的是运算符,请确保由于运算符优先级而正确设置了括号。
有几个逻辑numpy的功能,它应该工作的pandas.Series。
如果您在执行if或时遇到异常,则异常中提到的替代方法更适合while。我将在下面简短地解释每个:
如果要检查您的系列是否为空:
>>> x = pd.Series([])
>>> x.empty
True
>>> x = pd.Series([1])
>>> x.empty
False
如果没有明确的布尔值解释,Python通常会将len容器的gth(如list,,tuple…)解释为真值。因此,如果您想进行类似python的检查,可以执行:if x.size或if not x.empty代替if x。
如果您Series包含一个且只有一个布尔值:
>>> x = pd.Series([100])
>>> (x > 50).bool()
True
>>> (x < 50).bool()
False
如果要检查系列的第一个也是唯一的一项(例如,.bool()但即使不是布尔型内容也可以使用):
>>> x = pd.Series([100])
>>> x.item()
100
如果要检查所有或任何项目是否为非零,非空或非假:
>>> 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
问题内容: 在用条件过滤我的结果数据帧时遇到问题。我希望我的结果提取大于0.25且小于的所有列值。 下面的逻辑为我提供了一个模糊的真实值,但是当我将此过滤分为两个单独的操作时,它起作用。这是怎么回事 不知道在哪里使用建议。 问题答案: 在和python语句需要值。因为这些被认为是模棱两可的,所以你应该使用操作: 对于此类数据结构,它们会重载以产生元素级(或)。 只是为该语句添加更多解释: 当你想获
我有一个数据帧“信号”: 因为我需要一些条件来设置我的“\u exec\u dict”,这是一个告诉交易平台我的订单是什么的字典? 问题是我不能使用 来做条件判定。 要进行测试,请执行以下操作: 有一些改变, 结果是: 搜索后,像一个系列的真相值是模糊的。使用a.empty、a.bool()、a.item()、a.any()或a.all()
但我有一个错误。 ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。 我怎样才能修好它?
当我运行以下代码时: 它给出了以下错误: ValueError:序列的真值不明确。 使用a.empty、a.bool()、a.item()、a.any()或a.all() 这里怎么了?
我为uni开了一门课,我们开始编写代码,将数据解释成数据格式、图形等。在我们的一个作业中,我们得到了一个使用鼠标移动的实验数据。我们有不同的选项可以使用这些数据,我选择了尝试查找鼠标改变其路径的次数。我认为最好的方法是找到像素的差异,并将某些差异分配给它们的方向(使用循环)(这可能不是最好的方法,但我正在尝试:))。分配方向后,我可以再次查看差异。如果这些差异!=0,路径将会改变。遗憾的是,我没有