我是按Pandas 分组计算pct_change
的,但从每组的第一个元素开始算起.因此,我使用cumprod()
.我已经有了一个可以工作的代码,但它有点难看.我怎样才能把pct_change()
和cumprod()
放在一起呢?
My code:个
import pandas as pd
import numpy as np
data = [[1, 10], [2, 17], [3, 15],[4, 11], [5, 17], [6, 15]]
df = pd.DataFrame(data, columns=["id", "open"])
#normal
df['Normal'] =df['open'].pct_change().fillna(0).add(1).cumprod().sub(1).mul(100).round(2)
#groupby
df["Group_of_3"] = df.groupby(np.arange(len(df)) // 3 )["open"].pct_change().fillna(0).add(1)
df["Group_of_3"] = df.groupby(np.arange(len(df)) // 3 )["Group_of_3"].cumprod().sub(1).mul(100).round(2)
print(df)
output个
id open Normal Group_of_3
0 1 10 0.0 0.00
1 2 17 70.0 70.00
2 3 15 50.0 50.00
3 4 11 10.0 0.00
4 5 17 70.0 54.55
5 6 15 50.0 36.36