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

为什么新建pandas DataFrame时提示False/True列不在索引中?

问题原因
  • 报错核心是列名False和True的实际类型为布尔值,而非你取列时使用的字符串类型。
  • 生成透视表时,columns参数指定的alert_value字段本身存储的是布尔类型的True/False,因此透视表生成的列名会继承布尔类型,info输出时仅会展示列名内容不会标注类型,才会让你误以为是字符串列名。
  • 你用字符串'False'、'True'匹配布尔类型的列名,二者完全不相等,自然触发KeyError。

你可以执行以下代码验证列名类型:

print(finalDF.columns)

输出结果中可以看到False和True没有引号包裹,属于布尔值,其他字符串类型的列名会有引号包裹。

解决方法

有两种可行方案,按需选择即可:

方案1:直接用布尔值取列

直接去掉False和True外层的引号,用布尔值匹配列名:

displayDF = finalDF[[False, True, 'RULE ID', 'RULE NAME']]

方案2:统一列名为字符串类型(更推荐,避免后续其他操作踩坑)

先把所有列名转换为字符串格式,再按原写法取数:

# 转换所有列名格式为字符串
finalDF.columns = finalDF.columns.astype(str)
# 原写法即可正常执行
displayDF = finalDF[['False','True','RULE ID','RULE NAME']]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:39:00