在Pandas中按索引进行分组

3
我该如何使用groupby按索引(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()

但是不要用年份,而是通过索引来实现?


还有其他列,"score"不是唯一的一列。 - undefined
2
df.groupby(level=0)['Score'].sum() 或者 df.groupby(level=0).sum() 中的 level=0 是指索引。 - undefined
是的,但我需要索引组的总和,第一组123的总和为6,第二组123的总和为9,依此类推。 - undefined
1个回答

5

根据评论,您可以按索引进行分组,并在新对象 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接