You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas:统计指定布尔列中任意列为True的行数

问题解决:统计布尔DataFrame中任意指定列为True的总行数

原代码的问题

你的循环代码存在索引错误:df_con.loc[col]是获取整列的数据,并非当前行的对应列值。这会导致你用整列布尔数组和True比较,得到的是另一个布尔数组,而非单个布尔值,进而引发错误或逻辑偏差。

修正后的循环写法

如果一定要用循环实现,把判断条件改成当前行的列值即可:

df_con = df[['Traffic_Signal', 'Crossing', 'Junction', 'Bump', 'Railway']]
cols = ['Traffic_Signal', 'Crossing', 'Junction', 'Bump', 'Railway']

count = 0
for index, row in df_con.iterrows():
    for col in cols:
        if row[col]:  # 布尔值直接判断,无需写==True
            count += 1
            break
print(count)

更高效的Pandas向量化写法

iterrows在处理大数据集时效率极低,推荐用Pandas原生的向量化操作,一行代码就能完成统计:

target_cols = ['Traffic_Signal', 'Crossing', 'Junction', 'Bump', 'Railway']
# any(axis=1)判断每行是否至少有一个True,sum()统计True的数量
count = df[target_cols].any(axis=1).sum()
print(count)

原理:df[target_cols].any(axis=1)会生成一个布尔Series,每行标记该行是否存在至少一个True;sum()会把True当作1、False当作0,直接求和得到符合条件的总行数。

内容的提问来源于stack exchange,提问作者RRB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 00:05:17