如何删除从CSV读取的DataFrame中occupation列含问号的所有行?
问题分析与解决方法
你的代码没生效的核心原因是:把问号替换成空字符串后,这些行的occupation列是空字符串而非NaN,而dropna仅会删除值为NaN的行,自然无法过滤掉这些无效数据。
下面是几种直接有效的解决方式:
方法一:直接筛选有效行(最推荐)
一步到位过滤掉occupation列等于问号的行:
df = df[df['occupation'] != '?']
如果需要直接修改原DataFrame而非生成新对象,可结合索引删除:
df.drop(df[df['occupation'] == '?'].index, inplace=True)
方法二:替换后过滤空值
如果你的场景中occupation可能存在带问号的混合内容(比如?teacher),需要先清除问号再过滤空值:
# 替换问号为空(regex=False避免正则特殊字符干扰) df['occupation'] = df['occupation'].str.replace('?', '', regex=False) # 过滤掉空字符串(strip处理可能存在的空格) df = df[df['occupation'].str.strip() != '']
方法三:用query简化写法
偏好简洁语法的话,可使用query实现筛选:
df = df.query("occupation != '?'")
内容的提问来源于stack exchange,提问作者John Johnson
相关产品推荐
相关产品推荐

