仅在特定索引

时间:2017-08-20 17:26:25

标签: python pandas numpy dataframe

我正在研究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(),但我不知道如何从每个组中获取特定索引。

如果有任何不清楚的地方,请告诉我。

2 个答案:

答案 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