Панды: Как суммировать переменную по группе? - PullRequest
1 голос
/ 21 марта 2019

Я хотел бы суммировать несколько значений в Python.Смотри картинку ниже моих данных.Я хочу суммировать все значения AGE для каждого года для каждой страны.

Вместо этого:

country  TIME       AGE      Value
A        2017       20-60     200
A        2017       60-80     100
A        2016       20-60     200
A        2016       60-80     200
B        2017       20-60     300
B        2017       60-80     300
B        2016       20-60     400
B        2016       60-80     400

Я хотел бы иметь это:

country  TIME             Value
A       2017               300       
A       2016               400
B       2017               600       
B       2016               800

Типы данных:

df4types
AGE      object
Value    object
dtype: object

Данные имеют многоиндексный индекс по стране и TIME.

Если пробовали это:

df=df.groupby(by=["TIME","GEO"])['Value'].sum()

и это:

df=df.groupby(by=["TIME","GEO"]).sum()['Value']

Оба "сработали", но привели к огромной ценности.Как будто это не сумма, но вставьте числа друг за другомЯ попытался изменить тип переменной на числовой с помощью: df.Value.astype(float) & df.Value.astype(int)

К сожалению, это не решило проблему.У кого-нибудь есть идея, как правильно суммировать значения по группам и времени?Я также загрузил изображение реального набора данных.

enter image description here

1 Ответ

0 голосов
/ 21 марта 2019
  • Столбец возраста, похоже, не играет роли в данных, которые вы хотите.
  • «Значение» не должно быть объектом типа dtype =. Если вы попробуете df.Value = df.Value.astype(int) или df.Value=pd.to_numeric(df.Value), и это не сработает, я держу пари, что в этом столбце есть некоторые данные, которые вам нужно будет очистить)
  • Вам не нужно возиться с мультииндексом

После того как вы сделаете выше, попробуйте этот код.

import pandas as pd
df = pd.DataFrame(<your data here>)
result = df.groupby(by=['country','TIME']).sum() 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...