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

Python中如何筛选DataFrame里A列值处于B列值±2%范围的数据?

pandas筛选A列在B列±2%范围内数据的正确写法

你写的代码报错是因为pandas的Series对象不能直接用连续比较运算符(比如a <= b <= c),得拆分条件并用元素级逻辑符连接。

正确步骤:

  1. 先构建布尔筛选掩码,每个条件单独加括号,用&连接:
    mask = (df_['B'] * 0.98 <= df_['A']) & (df_['A'] <= df_['B'] * 1.02)
    
  2. 用掩码筛选数据:
    filtered_df = df_[mask]
    
  3. 计算筛选后的数据行数:
    len(filtered_df)
    # 或者直接用掩码求和(True会被视为1)
    mask.sum()
    

为啥原来的写法不行?

普通Python里a<=b<=c等价于a<=b and b<=c,但pandas里对Series用and会触发整体逻辑判断而非元素级判断,必须用&做元素级的与运算,同时括号不能少——因为&的优先级比<=高,不加括号会导致运算顺序出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 04:55:22