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

如何在Pandas DataFrame中基于同列其他行计算目标列值?

解决方案

计算规则(原英文公式翻译)

对于第i行(从0开始计数):

  • 若i不是最后一行,desired 值等于当前行的 col 值减去下一行的 col 值;
  • 若i是最后一行,desired 值等于当前行的 col 值。

以下是实现该逻辑的 Pandas 代码:

import pandas as pd

a = {'idx': range(8),
     'col': [47,33,23,33,32,31,22,5],
     }

df = pd.DataFrame(a)

# 计算 desired 列:当前 col 减去下一行 col
df['desired'] = df['col'] - df['col'].shift(-1)
# 填充最后一行的 NaN 为当前 col 值
df['desired'].iloc[-1] = df['col'].iloc[-1]

print(df)

运行上述代码后,输出结果与期望完全一致:

idx  col  desired
0    0   47       14
1    1   33       10
2    2   23      -10
3    3   33        1
4    4   32        1
5    5   31        9
6    6   22       17
7    7    5        5

代码说明

  • df['col'].shift(-1):将 col 列向下偏移一行,每一行的值变为下一行的 col 值,最后一行因无后续数据变为 NaN;
  • 原 col 列减去偏移后的列,即可得到除最后一行外的所有 desired 值;
  • 最后一行通过直接赋值为当前 col 值,填补偏移产生的 NaN。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:20:30