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

Pandas中反转布尔序列为何触发KeyError错误?

问题解决:正确拆分含布尔列的DataFrame

错误原因

你用~df['Column B']触发KeyError,核心问题是**df['Column B']的类型不是严格布尔型**(比如存的是0/1整数、字符串型布尔值或存在缺失值)。按位取反~会把布尔值/整数转成负数(比如~True→-2,~False→-1),此时Pandas会把这个负数数组当成列名去查找,自然找不到对应列,就抛出了KeyError。

正确解决方案

这里给你几种合规且无警告的写法:

  • 强制转布尔类型后取反
    先把Column B转成严格布尔序列,再用~取反做掩码,适用于非标准布尔类型的场景:
df2 = df[df['Column B'].astype(bool)]
df3 = df[~df['Column B'].astype(bool)]
  • 用Pandas内置eq()方法替代== False
    PEP8 E712警告是因为不推荐直接用== False比较布尔值,对于Pandas Series,eq(False)是官方推荐的等价写法,既符合规范又不会触发警告:
df2 = df[df['Column B']]
df3 = df[df['Column B'].eq(False)]
  • 纯布尔列且无缺失值的简化写法
    如果Column B已经是严格bool类型且无NaN,也可以直接用~操作布尔值本身:
df3 = df[~df['Column B']]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 20:10:31