减去熊猫数据框

时间:2020-04-06 17:42:39

标签: python pandas dataframe subtraction

我正在尝试减去2个数据帧,但是我没有得到想要的,之后,我想将差值除以第三个数据帧的值。

对于第一部分,我尝试做:

r.sub(rf, fill_value=0)

为确保它们具有相同的行数,我决定暂时不删除na,并确保它们具有相同的索引名。

这就是我所拥有的...

例如,在2020年1月9日,我应该拥有0.030079(= 0.136245-0.106166)。 看起来好像是在串联两个数据框的列...

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

请注意,根据您的图片:

  • 您只有一个 DataFrame(例如 df ),其中有两列
  • 您写了其中的,但第二个值是 否定

所以运行:

df['Brent Oil'] + df['S&P GSCI']

,例如对于 2020-01-09 ,结果将仅为 0.030079

编辑

或者您可能有2个数据框:

  • r 和(仅有的)布伦特原油列,
  • rf (也是唯一的) S&P GSCI 列(具有各自的正值),
  • 您的图片包含减法的结果

如果是这种情况,请减去给定的列,而不是整个DataFrame:

r['Brent Oil'].sub(rf['S&P GSCI'], fill_value=0)

那么结果将是一个 Series ,其值仅为 0.030079 2020-01-09

您还可以运行np.array(r['Brent Oil']) - np.array(rf['S&P GSCI']) (类似于 Anurag Reddy 提出的建议),但随后您会得到 只是一个 Numpy 数组,除去了索引,所以它并不明显 哪个日期是不同的,可能不是您想要的。

答案 1 :(得分:0)

是的,我有2个数据框。实际上是3 ...

我有一个循环,并且r应该是一个临时数据帧,我将其存储在其中:

  • 特定日期索引(例如Date.0,Date.1 ...)
  • 特定资产(例如,布伦特石油,原油...)

来自第三个DataFrame (this one),它将所有数据组合在一起。

然后对于每种资产,我想减去rf here

我确保具有相同的开始和结束日期,

    start=r.index[0]
    end=r.index.dropna()[-1]

但是是的,最后,我试图再次获得一个数据框。

我会尝试使用动态变量来命名您的建议!

r['Brent Oil'].sub(rf['S&P GSCI'], fill_value=0)