Группировка по индексу в Pandas

Как я могу использовать 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()

а вместо Года как-то по индексам сделать?

также "оценка" - не единственная колонка

Настя Кондрашина 12.12.2020 10:33
df.groupby(level=0)['Score'].sum() или df.groupby(level=0).sum(), где level=0 — индекс.
David Erickson 12.12.2020 10:34

да, но мне нужна сумма группы индексов, сумма 1-го 123 = 6 и второго 123 = 9 и т. д.

Настя Кондрашина 12.12.2020 11:01
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
3
4 681
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Согласно комментариям, вы можете groupby индексировать и возвращать cumcount() в новом объекте s. Затем вы можете сгруппировать этот новый объект 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

Другие вопросы по теме