pandas如何在apply函数中获取shift偏移值实现跨行计算新列
正确实现方式
使用numpy.where做向量化条件判断,配合pandas原生的整列shift操作即可实现需求,无需自定义函数、行级apply或临时列:
import numpy as np df['C'] = np.where( df['A'].shift() > df['A'], df['B'] + df['B'].shift(), # 下方替换为你的else分支计算逻辑 ... ) # 如需要处理首行空值(shift后首行无上游数据返回NaN),可追加fillna指定默认值 # df['C'] = np.where(...).fillna(首行默认值)
特性说明
- 完全采用pandas向量化运算,性能远高于逐行遍历/行级apply,符合pandas最佳编码实践
- 全程无临时列创建、无全量数据集拷贝,仅在原DataFrame上新增目标列C
numpy.where天然支持逐元素的条件判断,解决了原生Pythonif无法直接处理布尔Series的问题
内容的提问来源于stack exchange,提问作者montty
相关产品推荐
相关产品推荐

