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

如何对DataFrame每列执行运算并在列旁插入结果新列?

问题描述

我需要对pandas DataFrame的每一列执行运算,原DataFrame结构如下:

c0c1c2
123
234

运算规则:使用列表v1=[0,1,1,2,3,4,5]中对应位置的元素,用原列的值减去该元素(即运算结果 = 原列值 - v1对应位置元素),其中v1的第1个值对应第1列,第2个值对应第2列,以此类推。

示例:针对第一列创建右侧新列时,计算逻辑为(1-0)=1、(2-0)=1。

我已尝试为最后一列添加新列的代码:

df[7]=(df[6]-5)

但我需要对所有列实现此操作,即每列右侧都插入对应的运算结果新列,预期输出如下:

c0c1c2c3c4c5
1(1-0)=12(2-1)=13(3-1)=2
2(2-0)=13(3-1)=14(4-1)=3
解决方案

可以通过遍历原DataFrame的列,依次计算并插入新列到对应原列的右侧,具体代码如下:

import pandas as pd

# 构造原DataFrame
df = pd.DataFrame({
    'c0': [1, 2],
    'c1': [2, 3],
    'c2': [3, 4]
})

v1 = [0, 1, 1, 2, 3, 4, 5]

# 遍历原列的索引和列名
for idx, col in enumerate(df.columns):
    # 生成带计算逻辑的字符串结果(若只需数值结果,替换为 result = df[col] - v1[idx])
    result = df[col].apply(lambda x: f'({x}-{v1[idx]})={x - v1[idx]}')
    # 生成新列名,按预期输出命名为c3、c4、c5
    new_col = f'c{idx + 3}'
    # 插入新列到原列右侧
    df.insert(idx + 1, new_col, result)

print(df)

关键说明

  • 利用enumerate遍历列时同时获取列索引,对应v1中的元素位置,保证运算对应关系正确。
  • 使用df.insert方法指定插入位置为当前列索引+1,确保每列后紧跟运算结果列。
  • 若不需要显示计算逻辑字符串,只需保留数值结果,将result行替换为result = df[col] - v1[idx]即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 21:11:29