如何用Python定位大型CSV中的问题文本并解决NaN报错
解决AttributeError问题及定位缺失值的方法
一、彻底消除NaN/非字符串问题的预处理步骤
你之前的操作未真正修改原DataFrame的Text列——fillna、str.replace这类方法返回的是新对象,若不赋值回原列,原列仍会保留NaN(float类型)。按以下步骤调整:
读取CSV后统一处理缺失值并转为字符串
import pandas as pd df = pd.read_csv('your_file.csv') # 填充NaN为空字符串,强制转为str类型并覆盖原列 df['Text'] = df['Text'].fillna('').astype(str)执行字符替换(按需调整正则)
同样需赋值回原列确保修改生效:df['Text'] = df['Text'].str.replace(r"[^a-zA-Z]", " ", regex=True)删除仍存在的缺失行(可选)
明确指定检查列,避免误删其他列有缺失的行:df = df.dropna(subset=['Text'])调用预处理函数
此时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
相关产品推荐
相关产品推荐

