我正在尝试减去2个数据帧,但是我没有得到想要的,之后,我想将差值除以第三个数据帧的值。
对于第一部分,我尝试做:
r.sub(rf, fill_value=0)
为确保它们具有相同的行数,我决定暂时不删除na,并确保它们具有相同的索引名。
这就是我所拥有的...
例如,在2020年1月9日,我应该拥有0.030079(= 0.136245-0.106166)。 看起来好像是在串联两个数据框的列...
有什么建议吗?
答案 0 :(得分:0)
请注意,根据您的图片:
所以运行:
df['Brent Oil'] + df['S&P GSCI']
,例如对于 2020-01-09 ,结果将仅为 0.030079 。
或者您可能有2个数据框:
如果是这种情况,请减去给定的列,而不是整个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应该是一个临时数据帧,我将其存储在其中:
来自第三个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)