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

pandas DataFrame如何筛选值非False的列?

最优解法(针对单行DataFrame场景)

你原来的写法用了apply做没必要的逐行遍历,针对单行数据的场景可以直接取第一行生成布尔索引筛选列,写法更简洁,运行效率也更高:

df.loc[:, df.iloc[0] != False]

如果你的需求是严格仅排除值为布尔类型False的列,避免0、空字符串等假值被误筛,可以调整判断逻辑:

df.loc[:, ~(df.iloc[0].apply(type) == bool) | (df.iloc[0] != False)]

扩展:多行DataFrame的场景

如果后续你需要处理多行数据,可根据需求选择对应写法:

  • 保留所有行的值都不为False的列:
df.loc[:, (df != False).all(axis=0)]
  • 保留至少有一行的值不为False的列:
df.loc[:, (df != False).any(axis=0)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 22:45:01