You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用For循环删除DataFrame中指定列表内的字符串数据?

解决方法

你不需要用For循环,Pandas提供了更高效且不易出错的内置方法来批量处理这类需求,以下是两种常用方案:

方案1:直接筛选保留目标行

通过isin()方法判断dog_breed列的值是否在non_dogs列表中,再用取反符号~保留不在列表里的行:

non_dogs = ['tiger_shark', 'upright', 'walking_stick', 'water_bottle']
# 保留dog_breed不在non_dogs里的行,直接覆盖原DataFrame或赋值给新变量
clean_images = clean_images[~clean_images['dog_breed'].isin(non_dogs)]

方案2:获取待删除索引后批量删除

和你原来的单值删除逻辑一致,但改成批量匹配所有需要删除的值:

non_dogs = ['tiger_shark', 'upright', 'walking_stick', 'water_bottle']
# 获取所有dog_breed在non_dogs里的行索引
to_drop_index = clean_images[clean_images['dog_breed'].isin(non_dogs)].index
# 批量删除这些行,inplace=True直接修改原DataFrame
clean_images.drop(to_drop_index, inplace=True)

为什么你的For循环可能失效?

如果循环里每次对单个值执行drop且用了inplace=True,会导致DataFrame在循环过程中不断被修改,后续的索引匹配可能出现偏差;另外循环处理的效率远低于Pandas的向量化操作,批量处理才是更合理的选择。

内容的提问来源于stack exchange,提问作者Miebi Williams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 14:01:26