按熊猫指数分组



如何使用groupby by index(1,2,3((它们的顺序相同(并获得属于每个索引范围的列得分的总和?基本上我有这个:

index  score
1      2
2      2
3      2
1      3
2      3
3      3

我想要什么:

index  score  sum
1      2      6
2      2      9
3      2
1      3
2      3
3      3

我知道它一定是这样的:

df = df.groupby(['Year'])['Score'].sum()

但不是一年,而是通过指数来实现?

根据注释,可以groupby索引,并在新对象s中返回cumcount()。然后,您可以通过这个新对象s进行分组,并获得sum()。在您的示例中,我假设index位于index上,而不是名为index的列。如果它是一个名为index的列,那么首先执行df = df.set_index('index'):

s = df.groupby(level=0).cumcount()
df.groupby(s)['score'].sum()
0    6
1    9
Name: score, dtype: int64

如果打印出s,那么s看起来像这样:

index
1    0
2    0
3    0
1    1
2    1
3    1

最新更新