如何解决计算DataFrame的总回报
这是我在这里的第一篇文章,希望您能理解困扰我的事情。
因此,我有一个DataFrame,其中包含从2010年开始每天约1200家公司的价格。现在,我想计算每个公司的总回报。我的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])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。