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

如何在Pandas中以左连接方式对两个DataFrame执行减法运算?

解决Pandas DataFrame左连接式减法问题

要实现只保留左DataFrame行的减法,有两种简单直接的方法:

方法一:先对齐右DataFrame的索引到左表

先把df2的索引重定向到df1的索引(不存在的索引默认填充NaN,也可以指定fill_value设为0),再直接做减法:

import pandas as pd

# 示例数据
df1 = pd.DataFrame({'value': [10, 20, 30]}, index=['circle', 'triangle', 'rectangle'])
df2 = pd.DataFrame({'value': [5, 15]}, index=['circle', 'square'])

# 对齐索引后减法,保留df1的所有行
# 若希望df2无匹配的行,减法结果等于df1原值,就添加fill_value=0
result = df1 - df2.reindex(df1.index, fill_value=0)

运行后result的索引和df1完全一致,不会出现square这类仅存在于df2的行。

方法二:先做外连接减法,再筛选左表索引

先用sub完成默认外连接的减法,再通过loc筛选出df1的索引:

result = df1.sub(df2, fill_value=0).loc[df1.index]

这种方法逻辑直观,先完成所有可能的减法运算,再只保留你需要的左表行。

注意点

  • 如果不设置fill_value=0,df2中无匹配的索引位置会显示NaN,减法后对应位置也会变成NaN,可根据实际需求选择是否填充。
  • Pandas的算术运算默认采用外连接(取索引并集),确实没有how='left'这类参数,因此需要手动做索引对齐或事后筛选来实现左连接式的减法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:20:02