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

如何用Python定位大型CSV中的问题文本并解决NaN报错

解决AttributeError问题及定位缺失值的方法

一、彻底消除NaN/非字符串问题的预处理步骤

你之前的操作未真正修改原DataFrame的Text列——fillna、str.replace这类方法返回的是新对象,若不赋值回原列,原列仍会保留NaN(float类型)。按以下步骤调整:

  1. 读取CSV后统一处理缺失值并转为字符串

    import pandas as pd
    
    df = pd.read_csv('your_file.csv')
    # 填充NaN为空字符串,强制转为str类型并覆盖原列
    df['Text'] = df['Text'].fillna('').astype(str)
    
  2. 执行字符替换(按需调整正则)
    同样需赋值回原列确保修改生效:

    df['Text'] = df['Text'].str.replace(r"[^a-zA-Z]", " ", regex=True)
    
  3. 删除仍存在的缺失行(可选)
    明确指定检查列,避免误删其他列有缺失的行:

    df = df.dropna(subset=['Text'])
    
  4. 调用预处理函数
    此时Text列全为字符串类型,不会再触发float无lower属性的错误:

    df['cleaned_text'] = df['Text'].apply(preprocess_text)
    

二、定位问题文本的位置

若想找出原数据中导致报错的行,可用以下方法:

  • 找出所有NaN行

    nan_rows = df[df['Text'].isna()]
    print(nan_rows)  # 输出NaN行的索引和内容
    
  • 找出所有非字符串类型的行

    non_str_rows = df[df['Text'].apply(lambda x: not isinstance(x, str))]
    print(non_str_rows)
    
  • 快速查看数据类型分布

    print(df['Text'].apply(type).value_counts())
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 08:54:54