Pandas如何用单行代码完成差分比较及布尔列逻辑与运算
Pandas单行实现差分校验列计算
完全可以通过单行代码完成你描述的全流程计算,无需单独定义bs、fs中间变量。
实现代码
基于NumPy的版本(和原有分步逻辑100%对齐)
import numpy as np df['validation'] = np.logical_and(df['data'].diff(1).abs() <= 1, df['data'].diff(-1).abs() <= 1)
纯Pandas实现版本(无需额外调用NumPy逻辑运算方法)
df['validation'] = (df['data'].diff(1).abs() <= 1) & (df['data'].diff(-1).abs() <= 1)
逻辑说明
- 两种写法的计算逻辑和原有分步流程完全一致:
- 对
data列分别执行1步向后差分、1步向前差分计算 - 对差分结果取绝对值后判断是否小于等于1,直接生成对应布尔序列,跳过中间变量赋值步骤
- 对两个布尔序列执行逻辑与运算,结果直接赋值为
validation列
- 对
注意:使用
&运算符做布尔逻辑运算时,两个判断条件必须单独用括号包裹,否则会因Python运算符优先级规则触发计算错误。
内容的提问来源于stack exchange,提问作者Mainland
相关产品推荐
相关产品推荐

