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

如何无需for循环计算Pandas DataFrame列的偏移1行累积和?

用Pandas内置函数替代循环实现偏移累积和

你需要的逻辑本质是:列b的首项为0,后续每一项是列a前i项的累积和(i从0开始到当前索引-1)。完全可以用Pandas内置的cumsum()函数结合简单操作实现,无需手动循环,效率更高。

方法一:结合cumsum()与shift()

先对列a计算累积和,再将结果整体向下偏移1行,最后把首行的缺失值填充为0:

import pandas as pd

df = pd.DataFrame({'a': [1, 2, 3, 4]})
# 计算偏移累积和
df['b'] = df['a'].cumsum().shift(1).fillna(0).astype(int)
print(df)

输出结果:

a  b
0  1  0
1  2  1
2  3  3
3  4  6

方法二:直接拼接累积和前n-1项

先计算列a的累积和,取前n-1项(n为数据行数),再在前面拼接一个0:

import pandas as pd

df = pd.DataFrame({'a': [1, 2, 3, 4]})
# 拼接生成列b
df['b'] = [0] + df['a'].cumsum().tolist()[:-1]
print(df)

同样会得到符合要求的结果。

两种方法都避免了手动循环,在处理大规模数据集时,性能会远优于循环实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:55:25