pandas ValueError:Series的真值不明确,使用.empty、.bool()、.item()、.any()或.all()并使用&和if语句

e4eetjau  于 2023-03-21  发布在  其他
关注(0)|答案(2)|浏览(223)

我试图找出两列同时包含数字2的情况,并将其添加到计数中。
我试着在我的代码中遵循这篇文章Truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()的建议:

count = 0
if (df['Bedroom2'] == 2).bool() & (df['Car'] == 2).bool():
count += 1

print(count)

但是,它仍然显示错误:ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

xzlaal3s

xzlaal3s1#

如果要计算其中两列包含特定数字的行数,可以使用

count = ((df['Bedroom2'] == 2) & (df['Car'] == 2)).sum()

您的问题是在包含多个元素的Series上使用Series.bool()

>>> pd.Series([True]).bool()
True

>>> pd.Series([True, False]).bool()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "~/.local/lib/python3.10/site-packages/pandas/core/generic.py", line 1577, in bool
    self.__nonzero__()
  File "~/.local/lib/python3.10/site-packages/pandas/core/generic.py", line 1527, in __nonzero__
    raise ValueError(
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
cgfeq70w

cgfeq70w2#

这是我根据post you have linked解决它的方法:

import pandas as pd

data = {'col1': [1, 2, 3, 2], 'col2': [4, 2, 3, 2]}
df = pd.DataFrame(data)

count = len(df[(df['col1']==2) & (df['col2']==2)])
print(count) #outputs 2

基本上,您可以创建一个满足您的条件的 Dataframe ,并计算它的长度。

相关问题