Pandas如何删除object类型列的空行?astype(str)转换无效怎么办
你遇到的情况通常是两个原因导致的:一是直接用astype(str)转换会把原生NaN缺失值转为字符串'nan',而非真的空值;二是残留的空白行不是纯空字符串,还包含空格、制表符、换行符、全角空格等不可见空白字符,同时你之前的reset_index未加inplace=True,修改没有作用到原DataFrame上。
可行解决方案
1. 正确转换字符串类型
使用pandas专属的StringDtype类型转换,避免原生缺失值被转为字符串格式:
reviewsCleanDF['clean_review'] = reviewsCleanDF['clean_review'].astype('string')
2. 统一处理所有空白内容
先清除字符串首尾的所有不可见空白字符,再将空白内容统一置为NaN:
import numpy as np # 清除首尾空白(包含空格、制表符、换行、全角空格等) reviewsCleanDF['clean_review'] = reviewsCleanDF['clean_review'].str.strip() # 将空字符串替换为NaN reviewsCleanDF.loc[reviewsCleanDF['clean_review'] == '', 'clean_review'] = np.nan
3. 删除空行并重置索引
删除空行后重置索引时增加inplace=True参数,让修改直接作用到原DataFrame:
reviewsCleanDF.dropna(subset=['clean_review'], inplace=True) reviewsCleanDF.reset_index(drop=True, inplace=True)
残留问题排查
如果执行完以上步骤还有空白行,可以用以下代码打印该行的原始内容,识别不可见字符后针对性处理:
# 打印目标行的原始内容,不可见字符也会显示 print(repr(reviewsCleanDF.loc[607323, 'clean_review']))
内容的提问来源于stack exchange,提问作者kittyKat
相关产品推荐
相关产品推荐

