如何删除通过np.where条件筛选出的离群值对应的DataFrame整行
解决方案
你可以通过以下两种方式删除离群值对应的整行数据:
方法1:直接过滤保留非离群值(更简洁,无需调用np.where)
直接按条件筛选出rt列数值小于等于50000的行,赋值给原变量或新变量即可,这是日常处理中最常用的写法:
# 保留rt值≤50000的行,直接覆盖原DataFrame df_cor_inc = df_cor_inc[df_cor_inc['rt'].astype(float) <= 50000]
方法2:基于你已生成的np.where结果删除
np.where返回的第一个元素是离群值对应的行位置索引,你需要将其转换为DataFrame的实际行索引后调用drop方法删除:
# 提取离群值的行位置,转换为DataFrame实际索引 outlier_index = df_cor_inc.index[np.where(df_cor_inc['rt'].astype(float) > 50000)[0]] # 删除对应行,inplace=True表示直接修改原DataFrame df_cor_inc.drop(outlier_index, inplace=True)
注意事项
- 如果
rt列本身已经是数值类型,可以省略astype(float)步骤,提升运行效率 - 如果不想修改原始DataFrame,可以将处理后的结果赋值给新变量,例如:
df_clean = df_cor_inc[df_cor_inc['rt'].astype(float) <= 50000]
内容的提问来源于stack exchange,提问作者dazai
相关产品推荐
相关产品推荐

