如何提取pandas DataFrame指定列值为False的所有行
提取Pandas DataFrame中布尔列为False的行方案
你筛选失败首先要排查列名匹配问题:你代码里写的"Senior Management"和示例数据里的实际列名Sr.Management不一致,所有筛选逻辑首先要保证列名和DataFrame中的列名完全一致,否则会直接报键错误或者返回不符合预期的结果。
可用的筛选写法
以下三种写法都可以提取Sr.Management列为False的行,根据你的使用场景选即可:
- 直接等值判断,逻辑最直观
df[df["Sr.Management"] == False]
- 布尔取反写法,和你之前取True行的
df[df["列名"]]逻辑完全对应,写法最简洁
df[~df["Sr.Management"]]
- 用
eq方法加loc索引,鲁棒性最好,遇到列里有空值NaN的时候不会把空值误判为False返回,也不会触发pandas的链式索引警告
df.loc[df["Sr.Management"].eq(False), :]
结果验证
用你提供的示例数据运行上述代码,会准确返回两行符合要求的记录:
Name Gender Start Date Last Login Time Salary Bonus% Sr.Management Team 2 Maria Female 1993-04-23 2022-07-02 11:17:00 130590 11.858 False Finance 5 Dennis Male 1987-04-18 2022-07-02 01:35:00 115163 10.125 False Legal
小提示:如果运行前不确定列名到底是什么,可以先跑一句
print(df.columns)打印所有列名核对,避免因为列名拼写、空格、缩写差异导致筛选失败。
内容的提问来源于stack exchange,提问作者Vikrala Pavan
相关产品推荐
相关产品推荐

