如何在Pandas DataFrame中计算含当前行的下方行累加和?
Pandas实现当前行及下方行数值求和
要给DataFrame新增列B,计算列A中当前行及所有下方行的数值总和,最简洁高效的方式是利用cumsum()结合行反转操作:
步骤1:构造示例数据
import pandas as pd df = pd.DataFrame({'A': [2, 4, 3, 1]})
步骤2:计算列B
df['B'] = df['A'][::-1].cumsum()[::-1]
原理说明
df['A'][::-1]:将A列的行顺序反转,得到[1, 3, 4, 2].cumsum():对反转后的列做累计求和,得到[1, 4, 8, 10][::-1]:再次反转结果,还原为原行顺序,最终得到对应每行的"当前行+下方所有行"的和
验证结果
执行代码后打印DataFrame:
print(df)
输出如下:
A B 0 2 10 1 4 8 2 3 4 3 1 1
如果数据量较大,这个方法的效率远高于逐行循环计算,是Pandas中处理这类反向累计求和的最优方案之一。
内容的提问来源于stack exchange,提问作者SHV_la
相关产品推荐
相关产品推荐

