我知道以前曾有人问过这个问题,但是当我尝试if
发表声明时却遇到错误。我查看了此链接,但对我而言并没有太大帮助。我dfs
是DataFrames的列表。
我正在尝试以下,
for i in dfs:
if (i['var1'] < 3.000):
print(i)
给出以下错误:
ValueError:系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。
和 我尝试以下,并得到同样的错误。
for i,j in enumerate(dfs):
if (j['var1'] < 3.000):
print(i)
我的var1
数据类型是float32
。我没有使用任何其他logical
运算符和&
或|
。在上面的链接中,这似乎是因为使用了逻辑运算符。为什么会得到ValueError
?
这是一个小演示,它说明了为什么发生这种情况:
In [131]: df = pd.DataFrame(np.random.randint(0,20,(5,2)), columns=list('AB'))
In [132]: df
Out[132]:
A B
0 3 11
1 0 16
2 16 1
3 2 11
4 18 15
In [133]: res = df['A'] > 10
In [134]: res
Out[134]:
0 False
1 False
2 True
3 False
4 True
Name: 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]: True
In [138]: if res.any():
...: print(df)
...:
A B
0 3 11
1 0 16
2 16 1
3 2 11
4 18 15
我正在使用pandas数据框,并尝试选择和所在的行。列是int类型,而是一个对象。下面是我使用的表达式: 但我一直在犯错误: 我是初学者,甚至不知道如何表达我的问题。我看过其他关于堆栈溢出的答案,但它们对我来说没有意义。这个错误是什么意思?我应该知道哪些潜在的概念才能自己理解它?我该如何解决这个问题?
问题内容: 我正在使用Pandas,并尝试使用Python if-else语句(又称为三元条件运算符)创建新列,以避免被零除。 例如,在下面,我要通过除以A / B来创建新列C。我想使用if-else语句来避免被0除。 但是,我从最后一行得到一个错误: 任何帮助,将不胜感激。 问题答案: 产生系列,例如: 返回多个值导致歧义(一些为True,另一些为False)。 一种解决方案是使用:
但我有一个错误。 ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。 我怎样才能修好它?
当我运行以下代码时: 它给出了以下错误: ValueError:序列的真值不明确。 使用a.empty、a.bool()、a.item()、a.any()或a.all() 这里怎么了?
我想在dataframe a中添加一列, ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。
我试图比较两列,以查看一个值是否大于另一个值,但我一直得到一个ValueError: ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all() 以下是引发错误的部分: 我怎样才能解决这个问题?