You need to enable JavaScript to run this app. Pandas中如何为DataFrame新增同列相邻行求和的新列
优惠活动
大模型
产品
解决方案
定价
更多

Pandas中如何为DataFrame新增同列相邻行求和的新列

实现思路

你需要的同列相邻行求和需求,完全可以通过pandas内置的shift()移位方法实现,不需要手动逐行循环遍历,执行效率更高。

核心逻辑

你定义的新列规则是d1[i] + d1[i+1],也就是每一行的取值为当前行的d1值,加上同列下一行的d1值:

  • shift(-1)可以将d1整列向上移动1位,移位后每个行位置刚好对齐到“当前行的下一行d1值”
  • 将原d1列和移位后的d1列逐行相加,就能得到符合要求的求和结果

可直接运行的代码

import pandas as pd
# 复现你给出的初始数据结构
df = pd.DataFrame({
    "d1": [780, 784, 846, 843, 820, 819, 819, 820, 822],
    "d2": [37.0, 38.1, 38.1, 38.0, 36.3, 36.3, 36.4, 36.3, 36.4],
    "d3": [21.4, 21.4, 21.4, 21.5, 22.9, 22.9, 22.9, 22.9, 22.9],
    "d4": [122840.0, 122860.0, 122880.0, 122900.0, 133220.0, 133240.0, 133260.0, 133280.0, 133300.0]
})
# 新增d5列完成相邻行求和
df["d5"] = df["d1"] + df["d1"].shift(-1)

结果对照

计算得到的前3行输出和你给出的预期效果完全匹配:

d1d2d3d4d5
78037.021.4122840.01564.0
78438.121.4122860.01630.0
84638.121.4122880.01689.0

注意事项

  • 因为最后一行没有对应的下一行d1值,移位后最后一行的d5会自动填充为NaN,如果不需要保留该行结果,可以用df.dropna(subset=["d5"])过滤掉。
  • 如果后续需要调整求和方向(比如计算当前行和上一行的d1和),只需要把shift(-1)替换为shift(1)即可:shift的参数为正时代表列向下移位(取上一行的值),为负时代表列向上移位(取下一行的值)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.02 14:27:04