суммируй группу, не давая ожидаемого результата - PullRequest
0 голосов
/ 17 апреля 2019

Мне нужно суммировать значения одного столбца, используя group by для другого столбца, и переопределить фрейм данных этими значениями

Я пробовал -

df.groupby('S/T name')['Age group (Years)Total Persons'].sum()

Dataframe для реализации суммы на -

S/T code        S/T name          city name         population
1                NSW            Greater sydney       1000
1                NSW            rest of nsw          100
1                NSW            rest of nsw          2000
2                Victoria       Geelong              1200
2                Victoria       Melbourne            1300
2                Victoria       Melbourne            1000

Требуемый выход-

S/T code        S/T name        population
1                NSW                3100
2                Victoria           3500

Ответы [ 2 ]

1 голос
/ 17 апреля 2019

Похоже, что вы суммируете неправильный столбец в вашем примере, переход на популяцию дал бы вам большую часть пути:

df.groupby('S/T name')['population'].sum()

Поскольку вы хотите сохранить столбец кода S / T, вы можете использовать agg . Вызов суммы в вашем столбце населения и среднего значения в вашем столбце кода S / T:

df.groupby('S/T name').agg({'population': 'sum', 'S/T code': 'mean'})

Выход:

S/T name        S/T code  population              
NSW              1        3100
Victoria         2        3500
0 голосов
/ 17 апреля 2019

Попробуйте следующий код:

Решение 1

grouped_df = df.groupby('S/T name')['population'].sum()
print(grouped_df)

Приведенный выше код сгруппирует результаты по столбцу S/T name и даст sum из population столбец.

Решение 2

grouped_df1 = df.groupby('S/T name').agg({'S/Tcode':'unique','population': 'sum'})
grouped_df1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...