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

Pandas实现DataFrame指定两行相减并添加新行

解决方案

方法思路

无需转置DataFrame,直接定位目标行的数值列做减法运算,再将结果作为新行追加到原表末尾,逻辑直观且避免转置带来的额外操作。

代码实现

先构造原始DataFrame:

import pandas as pd

# 构建初始数据
data = {
    'WW': ['a', 'b', 'c'],
    'XX': [10, 4, 7],
    'YY': [20, 5, 8],
    'ZZ': [30, 6, 9]
}
df = pd.DataFrame(data)

然后执行行运算并追加新行:

# 提取行a和行c的数值列(XX、YY、ZZ)计算差值
diff_values = df.loc[df['WW'] == 'a', 'XX':'ZZ'].values[0] - df.loc[df['WW'] == 'c', 'XX':'ZZ'].values[0]

# 构造新行数据
new_row = pd.DataFrame({
    'WW': ['d'],
    'XX': [diff_values[0]],
    'YY': [diff_values[1]],
    'ZZ': [diff_values[2]]
})

# 合并新行到原DataFrame
df = pd.concat([df, new_row], ignore_index=True)

执行后得到的结果与预期一致:

WW  XX  YY  ZZ
0  a  10  20  30
1  b   4   5   6
2  c   7   8   9
3  d   3  12  21

简洁写法

如果追求代码精简,也可以用以下方式(注意:append方法在pandas 2.0+已被弃用,优先推荐上述concat方案):

df = pd.concat([
    df,
    pd.Series(['d'] + list(df.loc[df['WW'] == 'a', 'XX':'ZZ'].values[0] - df.loc[df['WW'] == 'c', 'XX':'ZZ'].values[0]),
              index=df.columns)
], ignore_index=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:11:13