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

如何在pandas DataFrame中垂直应用函数实现列值相邻行求和

正确实现方案

原代码报错原因

  • 语法错误:lambda表达式括号未闭合,axis=1是apply方法的参数,被错误放到了自定义add函数的传参位置
  • 逻辑错误:按行调用apply只能获取当前行的字段值,无法直接拿到前一行的A列数值,你的add函数需要两个入参但仅传入了当前行的A值,自然无法运行

最简实现方案

pandas内置的shift方法可以直接将列偏移指定行数,你要的计算逻辑可以一行代码搞定:

import pandas as pd

df = pd.DataFrame({'A':[1,2,3,4,5]})
# shift(1)将A列向下偏移1行,空值补0后和当前A列相加
df['add'] = df['A'] + df['A'].shift(1, fill_value=0)
print(df)

运行后即可得到你期望的输出:

A  add
0  1    1
1  2    3
2  3    5
3  4    7
4  5    9

如果你坚持要用apply方法实现

可以通过记录上一行值的方式完成,示例如下:

import pandas as pd

df = pd.DataFrame({'A':[1,2,3,4,5]})
prev = 0
def add_current_prev(current):
    global prev
    res = current + prev
    prev = current
    return res

df['add'] = df['A'].apply(add_current_prev)

注意这种方式需要依赖外部变量记录状态,性能远不如直接用shift的向量运算方案,仅做参考。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:45:04