python - 如何根据列映射减去两个数据帧?

标签 python pandas dataframe

我正在尝试从 df B 中减去 df A,其中列映射基于第三个映射数据帧。 在此示例中,应从 x1 中减去 B,并应从 x2 中减去 A。

这可以通过循环和其他一些肮脏的方法来完成,但我想知道是否有更简洁的方法来做到这一点。

数据框a

<表类="s-表"> <头> <日>日期 A B <正文> 2019-12-31 0.1 0.4 2020-12-31 0.3 0.6

数据框 b

<表类="s-表"> <头> <日>日期 x1 x2 x3 <正文> 2019-12-31 1.0 0.8 1.0 2020-12-31 0.4 0.7 1.5

数据框c

<表类="s-表"> <头> 来自 至 <正文> x1 B x2 一个 x3 一个

要求的结果

<表类="s-表"> <头> <日>日期 x1 x2 x3 <正文> 2019-12-31 0.6 0.7 0.9 2020-12-31 -0.2 0.4 1.2

最佳答案

在减去之前使用merge:

tmp = pd.merge(dfa, dfb, on='date')
dfb[dfc['From']] = tmp[dfc['From']].values - tmp[dfc['To']].values
print(dfb)

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

关于python - 如何根据列映射减去两个数据帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69652878/

相关文章:

python - 将文件上传到Django PYTHON中的自定义目录

python selenium 预期条件send_keys

python - 带有 Groupby 的 Pandas 滚动函数

python - 将附加列添加到 panda 数据框中比较两列

python - 快速将多列添加到 Pandas 数据框

python - Pandas:重复数据删除时如何创建 "master"记录

python - 使用正确的 python 版本安装 pip

python - Django 更新该行(如果存在)

python - pandas 日期时间转换不一致

python - Pandas 选择具有特定列中前 2 个值之一的所有行