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
相关产品推荐
相关产品推荐

