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

如何在Pandas中添加基于行差值与偏移计算的新列

解决方案:按指定规则生成新列

针对你的需求,这里提供两种简洁的实现方式,避免diff方法带来的NaN问题:

方法一:利用shift计算差值后重置偶数行

先通过shift(-1)获取下一行的值并计算差值,再将偶数行(原问题第2、4、6行)和最后一行设为0:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({'Column A': [1, 2, 3, 4, 5, 6]})

# 计算下一行减当前行的差值
df['New'] = df['Column A'].shift(-1) - df['Column A']
# 将偶数索引行(对应原问题第2、4、6行)设为0
df.loc[df.index % 2 == 1, 'New'] = 0
# 最后一行因shift(-1)得到NaN,直接设为0
df.loc[df.index[-1], 'New'] = 0

方法二:直接定位奇数行赋值

先将新列初始化为0,再对原问题第1、3、5行(对应索引0、2、4)直接赋值差值:

import pandas as pd

df = pd.DataFrame({'Column A': [1, 2, 3, 4, 5, 6]})

# 初始化新列为0
df['New'] = 0
# 给奇数位置行赋值:下一行值 - 当前行值
df.iloc[::2, df.columns.get_loc('New')] = df['Column A'].iloc[1::2].values - df['Column A'].iloc[::2].values

两种方法最终都会得到符合要求的结果,以示例数据为例,输出如下:

Column ANew
11
20
31
40
51
60

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 21:30:51