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

Python Pandas如何仅对指定列逐行减去另一列的数值

实现代码

你可以直接通过pandas的列筛选+按行减法实现,不需要手动遍历行,核心是正确指定减法的对齐方向:

import pandas as pd

# 构造示例数据(你实际使用时直接读取自己的df即可,这部分可以删掉)
data = {
    'Area': [22,45,67,54,21],
    '1': [54,36,34,35,27],
    '2': [33,54,29,19,39],
    '3': [46,32,11,22,43],
    '4': [23,14,14,45,22],
    'Select': [4,1,3,2,3],
    'Value': [23,36,11,19,43]
}
df = pd.DataFrame(data)

# 1. 筛选列名为数字的目标列
# 写法1:自动筛选所有列名是数字的列(适配列数变化的场景)
num_cols = df.columns[pd.to_numeric(df.columns, errors='coerce').notna()]
# 写法2:如果数字列固定是1/2/3/4,直接写更简单:
# num_cols = ['1', '2', '3', '4']

# 2. 对目标列逐行减去对应行的Value值,axis=0表示按行方向对齐计算
df[num_cols] = df[num_cols].sub(df['Value'], axis=0)

运行后输出的df就是你需要的结果。

关键说明

  • 列筛选的两种写法可以根据你的实际场景选:如果后续数字列的数量会增加/减少,用自动筛选的写法更灵活;如果列固定,直接写列名列表不容易出错。
  • sub方法的axis=0是核心参数:默认pandas做列对齐减法,加了这个参数后会逐行取Value的值,对该行所有目标列做减法,符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:18:03