如何用Pandas快速计算首行upper与第二行lower的差值?
解决方案
计算第一行upper与第二行lower的差值
直接通过索引定位对应元素做减法即可,这是最直接高效的方式:
diff = df.loc[0, 'upper'] - df.loc[1, 'lower']
扩展:批量计算每行upper与下一行lower的差值
如果你的需求是对整个数据集批量处理(而非仅第一、二行),可以用Pandas的shift()函数实现向量化运算,全程无需循环,处理大数据集速度极快:
df['upper_lower_diff'] = df['upper'] - df['lower'].shift(-1)
df['lower'].shift(-1)会把lower列的所有元素向上偏移一行,原本第2行的lower值会对应到第1行的位置,以此类推- 生成的
upper_lower_diff列中,第i行的值就是第i行upper - 第i+1行lower,最后一行会显示NaN(因为没有下一行的lower值可以计算)
效率说明
上述方法都是Pandas的向量化操作,底层基于Numpy实现,运算逻辑在C级别的代码中执行,比Python循环的效率高几个数量级,完全适配大数据集的时间要求。
内容的提问来源于stack exchange,提问作者Saud Ahmed
相关产品推荐
相关产品推荐

