Python 3.x 从DataFrame-python3获取一个非歧义布尔值

Python 3.x 从DataFrame-python3获取一个非歧义布尔值,python-3.x,dataframe,module,jupyter-notebook,valueerror,Python 3.x,Dataframe,Module,Jupyter Notebook,Valueerror,我编写了如下简单代码,其中df_行是一个数据帧,其中只有布尔值(True或False) DataFrame看起来像这样 Load_Avg Load_Avg_difference WaterLevel(cm) ... TIMESTAMP 2016-06-25 05:00:00 True Fals

我编写了如下简单代码,其中df_行是一个数据帧,其中只有布尔值(True或False)

DataFrame看起来像这样

                     Load_Avg  Load_Avg_difference  WaterLevel(cm)  ...
TIMESTAMP                                                           
2016-06-25 05:00:00      True                False           False  ...

现在,我想通过按顺序检查布尔值来中断df_行中是否有真正的布尔值

我总是会说一句错误的话

ValueError:数据帧的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。


我使用.bool()检查数据帧是真是假,对吗?我很困惑…

df\u row[colname]
返回一个序列。
bool
函数返回单个元素PandaObject的bool

因此,不能在Pandas系列上调用bool函数

如果要检查序列中的所有项是否为真,可以使用
df_行[colname].all()

如果要检查序列中的任何项是否为真,可以使用
df_row[colname].any()

不清楚您想要实现什么。是否要迭代每个列并检查该列中的任何值是否为True。如果是这样的话,那就从循环中中断?@abhilb很抱歉,还不清楚。我刚刚添加了一些代码,希望您能理解我在这里要做的事情。我想知道df_行中第一个出现的列的编号为True。根据上面的数据,第一个显示为真的是在Load_Avg列中,其列号为0,因此将其存储在hold_id中。非常感谢您的建议!我在这里没有提到,但我想知道从最左边的一栏第一次出现的数字是真的。这就是为什么我使用for循环逐个迭代它们。
hold_id = []
for j, colname in enumerate(colnames):
    if df_row[colname].bool():
        hold_id.append(j)

        break