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

如何用lambda函数获取下一行单元格值并完成指定除法计算?

解决方案:用Lambda实现DataFrame行间Val2的除法计算

首先构造示例DataFrame:

import pandas as pd

data = {'Val1': [48, 156, 61, 12, 64],
        'Val2': [21, 45, 54, 79, 45]}
DF = pd.DataFrame(data)

你之前的代码DF.apply(lambda x: x[1].val2, axis=1)无效的原因很明确:当axis=1时,apply传入lambda的x是当前行的Series对象,x[1]只是当前行索引为1的元素(即Val2的值),根本无法访问下一行数据,逻辑完全错误。

要在lambda里实现当前行Val2除以下一行Val2,且无需新建偏移列,可以利用行索引定位下一行数据,代码如下:

DF["Output"] = DF.apply(lambda row: row['Val2'] / DF.loc[row.name + 1, 'Val2'] if row.name < len(DF)-1 else None, axis=1)

代码说明:

  • row.name获取当前行的索引(默认是连续整数索引)
  • 通过row.name < len(DF)-1判断排除最后一行,避免索引越界
  • 非最后一行用DF.loc[row.name + 1, 'Val2']取到下一行的Val2值,再和当前行Val2做除法
  • 最后一行设为None,满足留空需求

运行后得到的结果:

Val1Val2Output
48210.466667
156450.833333
61540.683544
12791.755556
6445NaN

注:如果你的DataFrame索引不是连续整数,需要先执行DF = DF.reset_index(drop=True)重置索引,否则索引定位会出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 13:45:53