Python Pandas如何提取索引不在指定列表中的DataFrame行
Pandas DataFrame 排除指定索引行的实现方法
你之前代码报错的核心原因:
not关键字不能直接对列表做逐元素取反,它会对非空列表直接返回False布尔标量,而iloc不支持传入单个布尔值作为位置索引参数,因此触发类型错误。
实现方案
方法1:布尔索引取反(代码最简洁)
通过isin()方法生成匹配布尔数组,再用波浪号~做逐元素取反,直接传入iloc即可:
idx = [1,3,4] # 如果是要排除自定义索引的取值 subset = data.iloc[~data.index.isin(idx), :] # 如果是要排除默认的位置序号(不管自定义索引是什么) subset = data.iloc[~pd.Series(range(data.shape[0])).isin(idx), :]
方法2:生成过滤后的位置索引列表
先遍历所有行的位置序号,过滤掉要排除的序号后传入iloc:
idx = [1,3,4] keep_idx = [i for i in range(data.shape[0]) if i not in idx] subset = data.iloc[keep_idx, :]
内容的提问来源于stack exchange,提问作者maximus
相关产品推荐
相关产品推荐

