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

迭代pandas DataFrame列时如何使用lambda函数实现跨索引计算

跨索引计算高效实现方案

最优向量化方案(推荐)

pandas 内置的向量化操作底层由C实现,执行效率远高于Python层面的for循环、map/reduce等高阶函数,是处理这类需求的首选。你需要的相邻元素相乘逻辑可以通过shift()方法快速实现:

import pandas as pd
sensor_data = {'Sensor': ['A', 'B', 'C', 'D', 'E'], 'val': [20, 2 , 2, 19, 18]}
df = pd.DataFrame(sensor_data)

# 跨索引相邻相乘计算
cross_index_computation_result = (df['val'] * df['val'].shift(1)).dropna().astype(int).tolist()
print(cross_index_computation_result)
# 输出:[40, 4, 38, 342]

逻辑说明

  • df['val'].shift(1)会将val列的所有元素向下偏移1位,偏移后的第i个元素对应原始序列的第i-1个元素,首位自动填充为NaN
  • 两列直接相乘即可得到所有相邻元素的乘积结果,再通过dropna()去掉首位的NaN值,转成列表即可得到目标结果

高阶函数实现方案(如果需要用map类逻辑)

如果你需要用类似你示例中的map逻辑实现,可以通过zip配对相邻元素后计算,实现如下:

cross_index_computation_result = list(map(lambda x: x[0]*x[1], zip(df['val'][:-1], df['val'][1:])))

逻辑说明

  • df['val'][:-1]是去掉最后一个元素的原始序列,df['val'][1:]是去掉第一个元素的原始序列
  • 通过zip将两个序列按位置配对,每对元素就是相邻的两个值,传入lambda相乘即可得到结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:06:03