我想将数据框分成n组,每组大小均匀:
group_size = math.ceil(len(df)/n)
然后我要计算每个组的cumprod。
例如:
Val - Group - Cumprod
1 - 0 - 1
3 - 0 - 3
5 - 0 - 15
2 - 1 - 2
3 - 1 - 6
.. .. ..
感谢任何可能采取的方法的帮助。谢谢!
答案 0 :(得分:2)
# Number of Groups you want
#
a = np.arange(len(df)) * 2 // len(df)
df.assign(Cumprod=df.groupby(a).Val.cumprod())
Val Group Cumprod
0 1 0 1
1 3 0 3
2 5 0 15
3 2 1 2
4 3 1 6
答案 1 :(得分:1)
使用qcut
和cumprod
:
n = 2
df['cut'] = pd.qcut(df.index,n,labels=range(n))
df['cumprod'] = df.groupby('cut')['values'].cumprod()