如何使用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