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

Pandas DataFrame根据匹配的condition列对value列执行减法操作

实现方法

你可以通过左连接合并或者字典映射两种方式实现需求,以下是可直接运行的代码:

1. 构造测试数据

import pandas as pd

df = pd.DataFrame({'condition': [1, 2, 3], 
                     'value': [1, 2, 3]})
df_0 = pd.DataFrame({'condition': [1, 2], 
                     'value': [1, 3]})

2. 方法1:左连接合并计算(逻辑直观易理解)

先按condition字段将两个DataFrame左连接,用df作为基准保留所有行,未匹配到的df_0数值填充为0后做差值计算:

# 重命名df_0的value列避免合并时字段冲突
merged = df.merge(df_0.rename(columns={'value': 'value_ref'}), on='condition', how='left')
# 计算差值,未匹配到的参考值填充为0
merged['value'] = merged['value'] - merged['value_ref'].fillna(0)
# 提取目标字段得到结果
df_desired_result = merged[['condition', 'value']]

# 若需要value列为整数类型可加这行
# df_desired_result['value'] = df_desired_result['value'].astype(int)

3. 方法2:映射字典计算(代码更简洁)

将df_0的condition和value转为映射字典,直接对df的行做匹配计算:

ref_map = df_0.set_index('condition')['value'].to_dict()
df['value'] = df.apply(lambda x: x['value'] - ref_map.get(x['condition'], 0), axis=1)
df_desired_result = df

两种方法运行后均可得到你需要的结果:

condition  value
0          1      0
1          2     -1
2          3      3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:36:04