【发布时间】:2016-07-09 07:32:02
【问题描述】:
我有 Pandas DataFrame 中变量的对数返回数据。我想将这些收益转换为从 100(或任意数字)开始的索引时间序列。这种操作非常常见,例如在创建通货膨胀指数或比较两个不同幅度的序列时:
因此,例如,2000 年 1 月 1 日的第一个值设置为 100,2000 年 1 月 2 日的下一个值等于 100 * exp(return_2000_01_02),依此类推。下面的例子:
我知道我可以使用 .iteritems() 遍历 Pandas DataFrame 中的行,如这个 SO 问题中所述: iterating row by row through a pandas dataframe
我还知道我可以将 DataFrame 转换为 numpy 数组,遍历该数组中的值并将 numpy 数组转换回 Pandas DataFrame。 .as_matrix() 方法在这里解释: http://pandas.pydata.org/pandas-docs/version/0.13.1/generated/pandas.Series.html
更简单的方法是使用 Python 和 numpy 索引运算符 [] 来迭代行,如 Pandas 索引中所述: http://pandas.pydata.org/pandas-docs/stable/indexing.html
问题在于,所有这些解决方案(除了 iteritems)都在 Pandas 的“外部”工作,并且根据我所读到的内容,效率低下。
有没有办法使用纯 Pandas 创建索引时间序列?如果没有,请您提出最有效的方法。找到解决方案非常困难,因为索引和索引在 Pandas 中具有特定的含义,这次我不会。
【问题讨论】:
-
base 1 问题的解决方案是
(1 + df.return).cumprod(),其中df是您的数据框