Groupby: подсчитать общую сумму столбца за каждый год - PullRequest
0 голосов
/ 10 апреля 2019

Я довольно новичок в пандах и пытаюсь понять, как работать с командой Groupby.Я сгруппировал свои данные по годам, cik и boolean, теперь мне нужно суммировать значения для true и false в каждом году отдельно.

Я пробовал transform.(sum)['count'], но он добавляет все 3 года моих данных.Я был бы очень признателен за любую помощь / руководство.

Спасибо!

df.groupby(['cik','isBase','FY'])['ext'].agg('count').head()

df['ext'] = np.where(df['isBase']== 'false', 1, 0)

df = df.groupby(['cik','isBase','FY',]['ext'].agg('count').reset_index(name='count')

df.head()

        cik     isBase  FY    count
    0   1750    false   2015    78
    1   1750    false   2016    73
    2   1750    false   2017    62
    3   1750    true    2015    328
    4   1750    true    2016    306
    5   1750    true    2017    305

Я ожидаю, что результат будет примерно таким:

    cik    isBase   FY    count      totcount
0   1750    false   2015    78        406
1   1750    false   2016    73        376
2   1750    false   2017    62        367
3   1750    true    2015    328       406
4   1750    true    2016    306       376
5   1750    true    2017    305       367

КакПока я могу получить общий счет за каждый год T + F

Ответы [ 2 ]

0 голосов
/ 10 апреля 2019

Оказывается, я не правильно использовал свои скобки ... Это сработало

df['totcount'] = df.groupby(['cik','FY']).transform(sum)['count']

0 голосов
/ 10 апреля 2019

Попробуйте

df['totcount'] = df.groupby('FY')['count'].transform(sum)

По существу, df.groupby('FY'), чтобы сгруппировать все строки с одинаковыми годами, затем добавить df.groupby('FY')['count'] только посмотреть на столбец count. Теперь tranform(sum) конвертирует каждый год (группу) в соответствующую сумму.

Выход:

+-----+------+--------+------+-------+----------+--+
| idx | cik  | isBase |  FY  | count | totcount |  |
+-----+------+--------+------+-------+----------+--+
|   0 | 1750 | False  | 2015 |    78 |      406 |  |
|   1 | 1750 | False  | 2016 |    73 |      379 |  |
|   2 | 1750 | False  | 2017 |    62 |      367 |  |
|   3 | 1750 | True   | 2015 |   328 |      406 |  |
|   4 | 1750 | True   | 2016 |   306 |      379 |  |
|   5 | 1750 | True   | 2017 |   305 |      367 |  |
+-----+------+--------+------+-------+----------+--+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...