Столбец суммы на основе другого столбца в Pandas DataFrame - PullRequest
0 голосов
/ 29 мая 2019

У меня есть пандас DataFrame, как это:

>>> df = pd.DataFrame({'MONTREGL':[10,10,2222,35,200,56,5555],'SINID':['aaa','aaa','aaa','bbb','bbb','ccc','ccc'],'EXTRA':[400,400,400,500,500,333,333]})
>>> df
   MONTREGL SINID EXTRA
0        10   aaa   400
1        10   aaa   400
2      2222   aaa   400
3        35   bbb   500
4       200   bbb   500
5        56   ccc   333
6      5555   ccc   333

Я хочу суммировать столбец MONTREGL для каждой группы SINID ...

Таким образом, я получаю 2242 для AAAи так далее ... ТАКЖЕ я хочу сохранить значение столбца EXTRA.

Это ожидаемый результат:

   MONTREGL SINID EXTRA
0      2242   aaa   400
1       235   bbb   500
2      5611   ccc   333

Спасибо за вашу помощь заранее!

Ответы [ 3 ]

1 голос
/ 29 мая 2019

Код ниже работает для вашего запроса:

df1 = df.groupby(["SINID"]).sum()
df1['EXTRA'] = df.groupby(["SINID"]).mean()['EXTRA']

Результат:

       MONTREGL  EXTRA
SINID                 
aaa        2242  400.0
bbb         235  500.0
ccc        5611  333.0

Добро пожаловать:)

0 голосов
/ 30 мая 2019

В итоге я использовал этот скрипт:

dff = df.groupby(["SINID","EXTRA"]).MONTREGL.sum().reset_index()

И это работает в этом тесте и производстве.

0 голосов
/ 29 мая 2019

я бы предложил фильтровать ваш фрейм данных с условиями, связанными с другими столбцами, а затем применить функцию суммы,

это выглядит примерно так.

import pandas as pd

df=pd.Dataframe({a:[1,2,3],b:[2001,2015,2019],c:[1,0,1]})

aux=df[df.c>0]

sa=aux.a.sum()

sb=aux.b.sum()

Мой синтаксис может быть неправильным (я не запускал код), но он, вероятно, сработает и приведет вас к вашему ответу

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...