我写了如下简单的代码,其中df_row是一个其中仅包含布尔值(True或False)的DataFrame。
DataFrame看起来像这样,
Load_Avg Load_Avg_difference WaterLevel(cm) ...
TIMESTAMP
2016-06-25 05:00:00 True False False ...
hold_id = []
for j, colname in enumerate(colnames):
if df_row[colname].bool():
hold_id.append(j)
break
现在,我想通过按顺序检查布尔值来打破df_row中为True布尔值的情况。
我总是说错了
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我用.bool()检查DataFrame是True还是False,对吗?我很困惑...
答案 0 :(得分:0)
df_row[colname]
返回一个序列。
bool
函数返回单个元素PandasObject的布尔值。
因此,您不能在Pandas系列上调用bool函数。
如果要检查系列中的所有项目是否均为True,则可以使用
df_row[colname].all()
如果要检查系列中的任何一项是否为True,则可以使用
df_row[colname].any()