如何使用pandas删除DataFrame中Auto-Investment列为“No”的行
问题解决方法
你写的循环遍历删除的方式存在两个核心问题:
- 遍历DataFrame的同时修改原对象,会导致索引错位,出现漏删、报错等异常
- 代码写法不符合pandas的向量化操作逻辑,数据量稍大时性能极差
推荐实现方式
方式1:布尔索引筛选(最高效,最常用)
直接筛选保留Auto-Investment列取值不等于No的行即可:
df3 = df3[df3['Auto-Investment'] != 'No'] print(df3)
如果你的数据存在空格、大小写不一致的情况,可以调整判断条件,比如df3['Auto-Investment'].str.strip() != 'No'适配脏数据场景。
方式2:使用drop方法删除
如果习惯用drop操作的话,也可以直接定位到要删除的行索引批量删除,不需要写循环:
df3.drop(df3[df3['Auto-Investment'] == 'No'].index, inplace=True) print(df3)
注意:pandas官方已经不推荐使用inplace=True参数,优先使用重新赋值的写法更稳妥
内容的提问来源于stack exchange,提问作者Levsha
相关产品推荐
相关产品推荐

