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

如何在pandas中一次性批量创建多组窗口式配对列差值diff列

Pandas 按相邻两列批量插入差值列实现方案

参考测试数据集

import pandas as pd
d = {'col1':[2,4,5,6],'col2':[8,8,6,1],'col3':[1,2,3,4],'col4':[4,4,4,4]}
df = pd.DataFrame(d,index=['Item1','Item2','Item1','Item2'])

原始数据集示例

需求规则

按相邻两列为一组的窗口规则遍历DataFrame所有列,批量生成差值列:

  • 第一组计算col1与col2的差值,生成diff_1列,插入在col2之后
  • 第二组计算col3与col4的差值,生成diff_2列,插入在col4之后
  • 按上述规则依次处理所有列组,最终目标数据集结构如下:
d = {'col1':[2,4,5,6],'col2':[8,8,6,1],'diff_1':[-6,-4,1,5],'col3':[1,2,3,4],'col4':[4,4,4,4],'diff_2':[-3,-2,-1,0]}
df = pd.DataFrame(d,index=['Item1','Item2','Item1','Item2'])

目标结果数据集示例

一次性实现代码

直接运行以下代码即可得到符合要求的结果,无需后续手动调整列顺序:

# 按步长2遍历列索引,逐组计算差值并插入对应位置
for group_id, col_idx in enumerate(range(0, len(df.columns), 2), start=1):
    col_first = df.columns[col_idx]
    col_second = df.columns[col_idx + 1]
    # 按示例规则计算差值:组内第一列减第二列
    diff_series = df[col_first] - df[col_second]
    # 计算插入位置:每组两列后方插入,偏移量为已插入的diff列总数
    insert_pos = col_idx + 2 + (group_id - 1)
    df.insert(loc=insert_pos, column=f'diff_{group_id}', value=diff_series)

逻辑说明:

  • 步长设为2遍历列索引,每次取连续两列为一组,不会重复取值
  • 用enumerate直接生成diff列的序号,无需额外做编号计算
  • 插入位置提前计算了之前插入diff列带来的索引偏移,保证diff列正好落在每组两列的后方,和目标结构完全一致
  • 如果需要调整差值计算顺序(比如后一列减前一列),直接修改diff_series的计算逻辑即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:27:25