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

Pandas read_csv无法解析带前导空格的" FALSE"字符串报错如何解决

问题根因

你的配置不生效存在两个核心原因:

  1. false_values参数配置的匹配值和实际CSV内容大小写不匹配:你配置的是全大写的" FALSE",但报错日志里实际读取到的是首字母大写的" False",无法命中匹配规则
  2. 字段前的前导空格没有被默认处理,导致字符串既无法被识别为布尔值,也无法被pd.to_numeric直接解析

解决方案

方案1:修改read_csv参数从读入阶段解决(推荐)

新增skipinitialspace参数自动忽略所有字段的前导空格,同时补全true_values、false_values的大小写匹配规则即可:

data = pd.read_csv(
    os.path.join(path, working_dir, staticDataFileName),
    encoding_errors='ignore',
    skipinitialspace=True,  # 自动去除每个字段前的所有前导空格
    true_values=["TRUE", "True", "true"],  # 覆盖所有大小写写法的真值
    false_values=["FALSE", "False", "false"]  # 覆盖所有大小写写法的假值
)

该方案不需要修改后续的pd.to_numeric逻辑,读入后对应列会直接变成布尔类型或者数值类型,可直接转换成功。

方案2:在数值转换前预处理字符串

如果不想修改读入逻辑,可在执行pd.to_numeric前先对字段做空格清除和布尔值替换:

cols=[i for i in data.columns if i not in ["Time"]]
for col in cols:
    # 先清除字符串前后所有空格,再把布尔字符串替换为数值
    data[col] = data[col].str.strip().replace({"True": 1, "False": 0, "TRUE":1, "FALSE":0})
    data[col] = pd.to_numeric(data[col])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:06:02