这是我在这里的第一篇文章,希望您能理解困扰我的原因。
因此,我有一个DataFrame,其中包含每天约1200家公司的价格,从2010年开始。现在,我想计算每家公司的总回报。我的DataFrame按日期索引。我可以使用该df.iloc[-1]/df.iloc[0]
方法,但是有些公司后来开始公开交易,所以我无法获得这些公司的结果,因为它们被NaN值除以。我已经尝试通过创建一个包含每个股票(列)的第一个有效指数的列表,然后在尝试计算总回报时得到错误的结果!我已经尝试过经典的for循环:
for l in list:
returns = df.iloc[-1]/df.iloc[l]
例如,一只股票的最后价格是16美元左右,而我拥有的第一个数据是1.5美元,这是回报的10倍以上,但我的结果只有1.1左右!我还要补充一点,上述列表还包括Date的第一个有效索引,并且它位于第一个位置。
有人能帮帮我吗?非常感谢你
实际上,您可以通过多种方法进行处理。但我确实建议您在进入更复杂的示例之前,先通过一些基本示例来熟悉python的技能。
如果您想按照自己的方式做,可以这样:
returns = {}
for stock_name in df.columns:
returns[stock_name] = df[stock_name].dropna().iloc[-1] / df[stock_name].dropna().iloc[0]
更加Python化的方式是将其以矢量化形式进行处理,如下所示:
returns = ((1 + data.ffill().pct_change())
.cumprod()
.iloc[-1])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句