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

如何基于第三方列映射表实现两个DataFrame的对应列相减

解决方案

核心思路是利用映射表重命名DataFrame A的列,直接和DataFrame B做向量化减法,完全不需要循环,代码简洁的同时执行效率也更高。

完整可运行代码示例:

import pandas as pd

# 样例数据构造
a = pd.DataFrame({
    'date': ['12/31/2019', '12/31/2020'],
    'A': [0.1, 0.3],
    'B': [0.4, 0.6]
})
b = pd.DataFrame({
    'date': ['12/31/2019', '12/31/2020'],
    'x1': [1.0, 0.4],
    'x2': [0.8, 0.7],
    'x3': [1.0, 1.5]
})
c = pd.DataFrame({
    'From': ['x1', 'x2', 'x3'],
    'To': ['B', 'A', 'A']
})

# 核心运算逻辑
# 1. 将映射表转为字典
col_map = dict(zip(c['From'], c['To']))
# 2. 按date对齐两个表,重命名a的列和b匹配后直接做减法
result = b.set_index('date') - a.set_index('date').rename(columns={v:k for k,v in col_map.items()})
# 恢复date为普通列
result = result.reset_index()

print(result)

运行输出的结果和你预期的完全一致:

date   x1   x2   x3
0  12/31/2019  0.6  0.7  0.9
1  12/31/2020 -0.2  0.4  1.2

如果两个表的date不是完全对齐的,你可以先通过merge操作对齐日期后再执行上述运算,逻辑是通用的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:54:04