这是我的 Pandas 数据框:

prices = pandas.DataFrame([1035.23, 1032.47, 1011.78, 1010.59, 1016.03, 1007.95,
              1022.75, 1021.52, 1026.11, 1027.04, 1030.58, 1030.42,
              1036.24, 1015.00, 1015.20])

这是我的daily_return函数:
def daily_return(prices):
    return prices[:-1] / prices[1:] - 1

这是此函数的输出:
0    NaN
1      0
2      0
3      0
4      0
5      0
6      0
7      0
8      0
9      0
10     0
11     0
12     0
13     0
14   NaN

为什么会有这个输出?

最佳答案

由于操作将对索引进行对齐,因此可以将DataFrame之一转换为数组:

prices[:-1].values / prices[1:] - 1

或者
prices[:-1] / prices[1:].values - 1

取决于所需结果的索引。

或使用shift()方法:
prices.shift(1) / prices - 1

和:
prices / prices.shift(1) - 1

关于python - 使用Pandas DataFrame计算每日 yield ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20000726/

10-12 00:41