如何使用Pandas删除RET列绝对值大于0.10的所有数据行?
解决删除RET列绝对值大于0.10行的问题
你的原代码存在几个关键问题:
- 错误地对字符串
'RET'转float后取绝对值,实际应该直接对data['RET']列做绝对值计算 - 语法错误,末尾多了一个左方括号,导致代码无法正常运行
- 用方括号包裹整个筛选逻辑属于多余操作
给你两种正确的实现方式:
方式一:直接筛选保留符合条件的行
这种方式会生成新的DataFrame,仅保留RET列绝对值≤0.10的行:
df_drop = data[data['RET'].abs() <= 0.10]
data['RET'].abs():对RET列的每一个元素取绝对值<=0.10会生成布尔序列,True代表该行符合保留条件- 用这个布尔序列索引原DataFrame,就能得到筛选后的结果
方式二:直接删除不符合条件的行(修改原DataFrame)
如果想直接在原数据上删除目标行,可以这么写:
# 获取所有需要删除的行的索引 drop_indices = data[data['RET'].abs() > 0.10].index # 删除指定索引的行,inplace=True表示直接修改原data,无需重新赋值 data.drop(drop_indices, inplace=True)
内容的提问来源于stack exchange,提问作者BlessTheSilver
相关产品推荐
相关产品推荐

