我正在研究如何使用 pandas pct_change() 函数,但我需要值“环绕”,因此最后一个值和第一个值在位置 0 而不是 NaN 创建百分比变化值。
例如:
df = pd.DataFrame({'Month':[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
'Value':[1, 0.9, 0.8, 0.75, 0.75, 0.8, 0.7, 0.65, 0.7, 0.8, 0.85, 0.9]})
Month Value
0 1 1.00
1 2 0.90
2 3 0.80
3 4 0.75
4 5 0.75
5 6 0.80
6 7 0.70
7 8 0.65
8 9 0.70
9 10 0.80
10 11 0.85
11 12 0.90
使用 pct_change() + 1 可得出:
df['percent change'] = df['Value'].pct_change() + 1
Month Value percent change
0 1 1.00 NaN
1 2 0.90 0.900000
2 3 0.80 0.888889
3 4 0.75 0.937500
4 5 0.75 1.000000
5 6 0.80 1.066667
6 7 0.70 0.875000
7 8 0.65 0.928571
8 9 0.70 1.076923
9 10 0.80 1.142857
10 11 0.85 1.062500
11 12 0.90 1.058824
但是我还需要知道 12 月(moth=12)和 1 月(month=1)之间的百分比变化,因此 NaN 应该是 1.111111。我希望最终能够对分组中的多个组执行此操作,因此,将 Nan 填入一个值而不是另一个值,或者手动计算所有百分比似乎是一种冗长的方法。有没有更简单的方法来实现这一点?