Pandas删除列中特定值时,drop参数重复写DataFrame的语法疑问
Pandas中drop方法重复引用DataFrame的原因解析
先看正确代码:
season_stats.drop(season_stats[season_stats['Pos'] == 'SF-SG'].index, inplace = True)
为什么要重复写season_stats?
这里的season_stats[season_stats['Pos'] == 'SF-SG']是完整的行筛选逻辑:
season_stats['Pos'] == 'SF-SG'会生成一个布尔Series,每行对应True/False,标记该行的Pos是否是SF-SG。- 前面的
season_stats[]是用这个布尔Series去索引原DataFrame,筛选出所有符合条件的行子集。 - 最后
.index提取这个子集的行索引,把这些索引传给drop,才能精准删除目标行。
为什么少写season_stats的代码无法生效?
你写的错误代码不仅有语法问题(括号不匹配,少了一个[),逻辑上也完全错误:
- 就算修正语法写成
season_stats.drop( (season_stats['Pos'] == 'SF-SG').index, inplace=True),这里的(season_stats['Pos'] == 'SF-SG').index取的是布尔Series本身的索引——也就是原DataFrame的全部行索引,drop会尝试删除所有行,完全不符合需求。 - 更核心的是,错误代码没有通过布尔索引筛选出目标行,根本没拿到真正要删除的行的索引,加上语法错误,代码直接会报错,根本无法正常执行。
内容的提问来源于stack exchange,提问作者shahzaib aslam
相关产品推荐
相关产品推荐

