我正在研究pandas数据框,如下所示:
id vals
0 1 11
1 1 5.5
2 1 -2
3 1 8
4 2 3
5 2 4
6 2 19
7 2 20
上面只是df的一小部分, vals 按 id 分组,每个ID总是有相同数量的val。在上面的例子中,id = 1和id = 2的值为4和4。
我想要实现的是在索引0处添加值,索引为4处的值,然后在索引1处添加值,在索引5处使用值,依此类推。 以下是预期的df /系列,比如df2:
total
0 14
1 9.5
2 17
3 28
Real df有数百个id,而不仅仅是上面的两个。 可以使用 Groupby(),但我不知道如何从每个组中获取特定索引。
如果有任何不清楚的地方,请告诉我。
答案 0 :(得分:1)
groupby
关于df.index
值的模数并取sum
的{{1}}
vals
答案 1 :(得分:1)
由于每个ID确实有4
个值,因此我们可以简单地将基础1D
数组数据重新整形为2D
数组并沿适当的轴求和(在这种情况下,轴= 0) -
pd.DataFrame({'total':df.vals.values.reshape(-1,4).sum(0)})
示例运行 -
In [192]: df
Out[192]:
id vals
0 1 11.0
1 1 5.5
2 1 -2.0
3 1 8.0
4 2 3.0
5 2 4.0
6 2 19.0
7 2 20.0
In [193]: pd.DataFrame({'total':df.vals.values.reshape(-1,4).sum(0)})
Out[193]:
total
0 14.0
1 9.5
2 17.0
3 28.0