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

如何将pandas DataFrame中numpy.bool类型值替换为指定字符串

问题说明

现有如下结构的pandas DataFrame:

Name      Enrolled
JarJar          TRUE
  Boba         FALSE

需要实现的效果是将DataFrame中所有不区分大小写的TRUE/FALSE值,分别替换为TRUE_/FALSE_。
初始尝试的正则替换代码如下:

df_to_add = df_to_add.replace('(?i)true', 'TRUE_', regex=True)
df_to_add = df_to_add.replace('(?i)false', 'FALSE_', regex=True)

替换失效原因:DataFrame中存储的TRUE/FALSE为numpy.bool_布尔类型,并非字符串类型,正则匹配规则无法作用于非字符串类型的取值。

实现方案

根据使用场景可以选择以下两种方案:

  • 全场景兼容方案(同时支持布尔类型值、任意大小写字符串格式的true/false替换)
    先将全表值转换为字符串类型,再执行正则替换即可覆盖所有场景:
    # 全表转字符串后执行正则替换
    df_to_add = df_to_add.astype(str)
    df_to_add = df_to_add.replace('(?i)true', 'TRUE_', regex=True)
    df_to_add = df_to_add.replace('(?i)false', 'FALSE_', regex=True)
    
  • 高性能定向替换方案(适合明确字段类型的场景)
    如果不需要处理字符串格式的true/false,仅需替换numpy布尔值,直接通过值映射替换即可,无需启用正则,执行效率更高:
    # 直接映射布尔值为目标字符串
    df_to_add = df_to_add.replace({True: 'TRUE_', False: 'FALSE_'})
    
    如果需要同时兼容不同大小写的字符串格式true/false,可以补全映射字典,不需要走正则逻辑:
    replace_map = {
        True: 'TRUE_',
        False: 'FALSE_',
        'TRUE': 'TRUE_',
        'True': 'TRUE_',
        'true': 'TRUE_',
        'FALSE': 'FALSE_',
        'False': 'FALSE_',
        'false': 'FALSE_'
    }
    df_to_add = df_to_add.replace(replace_map)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:57:09