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

如何实现每两行分组计算行差并跳行填充结果?

实现跳行式连续行对差值计算

需要计算每一对连续行的差值,且实现“跳行”效果——仅处理第0&1行、第2&3行这样的两两分组,计算每组内第一行减第二行的差值,其余行填充NaN。目标输出如下:

a output
0 5 -3
1 8 nan
2 2 -2
3 4 nan

注:目标差值为5-8=-3和2-4=-2

你尝试的代码df['output'] = df['C'] - df['C'].shift(-1)会计算每一行与下一行的差值,无法实现分组跳行的效果,可通过以下方式解决:

解决方案

利用行索引分组,每两行分为一组,在组内计算指定差值后,仅保留每组第一行的结果:

import pandas as pd

# 构造示例数据
df = pd.DataFrame({'a': [5, 8, 2, 4]})

# 按行索引整除2进行分组,每两行一组
groups = df.groupby(df.index // 2)

# 对每组计算第一行减第二行的差值,映射回原数据
df['output'] = groups['a'].transform(lambda x: x.iloc[0] - x.iloc[1] if len(x) == 2 else None)

# 仅保留每组第一行的结果,其余行设为NaN
df['output'] = df['output'].where(df.index % 2 == 0, None)

执行后得到的结果符合需求:

a  output
0  5    -3.0
1  8     NaN
2  2    -2.0
3  4     NaN

如果需要将差值放在每组的第二行,只需调整where的条件为df.index % 2 == 1即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 10:45:33