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

如何在Pandas DataFrame中计算指定列与最后一列的差值?

解决方法

你需要的是让所有列与某一特定列(比如最后一列)逐行计算差值,df.diff(axis=1)是计算相邻列的差值,确实不符合需求。这里有两种高效的实现方式:

方法一:利用sub()方法(推荐)

借助pandas的广播特性,直接让整个DataFrame与目标列做减法运算:

import pandas as pd

# 构造示例数据
df = pd.DataFrame({'A': [1,2,3], 'B': [4,5,6], 'C': [7,8,9]})

# 获取最后一列作为基准列
base_col = df.iloc[:, -1]

# 计算所有列与基准列的差值(保留所有列,基准列自身差值为0)
diff_df = df.sub(base_col, axis=0)

# 如果只需要非基准列的差值,可筛选列
# diff_df = df.iloc[:, :-1].sub(base_col, axis=0)

运行后输出(保留所有列的情况):

A  B  C
0 -6 -3  0
1 -6 -3  0
2 -6 -3  0

方法二:使用apply()逐行处理

如果需要更灵活的逻辑(比如自定义差值规则),可以用apply()逐行计算:

diff_df = df.apply(lambda row: row - row.iloc[-1], axis=1)

这个方法和上面的结果一致,但对于大型数据集,sub()的广播运算效率更高。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:17:02