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

如何筛选Pandas中未被识别为布尔类型的布尔值列

解决方案

你的场景中目标列包含np.nan和字符串格式的'True'/'False',不属于标准布尔dtype,因此无法直接按数据类型筛选,可通过自定义列校验规则实现筛选。

完整实现代码

import pandas as pd
import numpy as np

# 构造示例数据
df = pd.DataFrame({
    'RefID': [1, 2, 3, 4],
    'Lastname': ['Bluejay', 'Westie', 'Tiger', 'Dodo'],
    'Firstname': ['Cantankerous', 'Joy', 'Fifi', 'Mo'],
    'Age': [4, 24, 3, 11],
    'Data': [np.nan, 'False', 'True', 'True'],
    'Graph': [np.nan, 'True', 'False', 'False'],
    'ML': [np.nan, 'False', 'True', 'True']
})

# 自定义列校验规则:判断非空值是否都是'True'/'False'
def is_bool_like(col):
    non_na_values = col.dropna()
    # 全空列可根据需求调整返回值
    if len(non_na_values) == 0:
        return False
    return non_na_values.isin({'True', 'False'}).all()

# 筛选符合条件的列
df1 = df.loc[:, df.apply(is_bool_like)]

# 可选:转换为Pandas可空布尔类型,支持NA值,后续可直接按布尔dtype筛选
# df1 = df1.replace({'True': True, 'False': False}).astype('boolean')

结果验证

输出df1即可得到你需要的子DataFrame,仅保留Data、Graph、ML三列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:45:00