Pandas 系列共有三个
x = pd.Series([220,340,500,600,700,900,540,60])
y = pd.Series([2,1,2,2,1])
z = pd.Series([])
y的每个元素表示要添加多少个元素放入z中 示例:如果系列开头有 2,那么我将在开头添加前两个元素 220 和 340 以获得 560,然后将其放入 z 作为其第一个元素。接下来我在 y 中有 1,这意味着我将从 x(第三个元素)中取出 500,并将其作为第二个元素放入 z 中,依此类推
这是我尝试过的
j = 0
for i in y:
par = y[i]
z[i] = x[j:par + j].sum()
j = j+par
请您参考如下方法:
Groupby y 的索引重复:
x.groupby(y.index.repeat(y)).sum()
0 560
1 500
2 1300
3 1440
4 60
dtype: int64
如果长度不匹配,这将导致 ValueError。在这种情况下,更安全的替代方法是对 cumsum 进行分组,重复并重置索引:
x.groupby(y.cumsum().repeat(y).reset_index(drop=True)).sum()
