如何删除Pandas中对象类型Drop列值为'Drop'的所有行?
代码失效原因
- 你写的第一段取索引再删除的代码逻辑本身是成立的,没生效大概率是
Drop列中的目标值存在前后空格、大小写差异或隐藏字符,并非严格等于字符串'Drop'。 - 后续代码均存在语法错误:
df.drop()方法不直接接收布尔序列作为参数,需要传入要删除的行的索引标签或位置;同时你对df.where的参数顺序使用错误,生成的Drop_1列完全不符合筛选预期。
正确解决步骤
第一步:先排查列值异常
先运行代码确认列的实际内容,去除多余空白字符:
# 输出Drop列所有唯一值,查看实际存储的内容 print(df['Drop'].unique()) # 去除列值的前后空格、换行符等空白字符 df['Drop'] = df['Drop'].str.strip()
第二步:执行行删除(推荐第一种写法,更简洁高效)
方法1:直接保留符合要求的行
# 保留Drop列值不等于'Drop'的所有行,加copy避免后续出现SettingWithCopy警告 df = df[df['Drop'] != 'Drop'].copy() # 如果需要忽略大小写匹配,同时自动跳过NaN值,用下面的写法 df = df[~df['Drop'].str.contains('^Drop$', case=False, na=False)].copy()
方法2:用drop方法实现
df.drop(df[df['Drop'] == 'Drop'].index, inplace=True)
内容的提问来源于stack exchange,提问作者holguinmora
相关产品推荐
相关产品推荐

