如何使用Pandas比较两列数值是否相近并删除对应行
Pandas 两列数值相近行删除实现方案
你描述的需求可以直接通过 Pandas 布尔索引实现,无需额外的特殊内置函数,完全适配你提到的「A值处于B值±15%范围内则删除」的判断规则。
完整实现代码
import pandas as pd # 构造你提供的示例DataFrame df = pd.DataFrame( data={'A': [3.21, 6.98, 5.41, 0.32], 'B': [3.15, 2.07, 8.95, 0.30]}, index=[1, 2, 3, 4] ) # 核心筛选逻辑:取反删除符合「A在B的±15%区间」的行 df_filtered = df[~((df['A'] >= df['B'] * 0.85) & (df['A'] <= df['B'] * 1.15))] # 输出结果 print(df_filtered)
代码逻辑说明
- 括号内的
(df['A'] >= df['B'] * 0.85) & (df['A'] <= df['B'] * 1.15)会逐行判断A列值是否落在对应行B值的±15%区间内,返回布尔序列 - 符号
~代表布尔值取反,即保留所有不符合删除条件的行
运行结果
A B 2 6.98 2.07 3 5.41 8.95
和你预期保留的行完全一致。如果后续需要调整阈值,只需要修改0.85和1.15两个系数即可。
内容的提问来源于stack exchange,提问作者piesandcustards
相关产品推荐
相关产品推荐

