Найти сумму из команды groupby.size () - PullRequest
2 голосов
/ 02 октября 2019

У меня есть строка кода, которая выдает количество таблиц из команды groupby из двух столбцов:

beat_pri = df_2011.groupby(['Beat', 'Priority']).size()

Таблица произведена:

Beat  Priority    Count
01X   1.0          394
      2.0         1816

02X   1.0          644
      2.0         1970

02Y   1.0          661

                  ... 

Что я пытаюсь сделатьДля этого создайте новый столбец 'Total', который представляет собой общее количество, сгруппированное по столбцу beat. Например,

Beat     Priority   Count  Total    
01X       1.0       394     2210
          2.0       1816

02X       1.0       644     2614
          2.0       1970

02Y       1.0       661     2970
          2.0       2309
        ... 

То, что я пробовал до сих пор:

beat_pri2011['Total'] = df_2011.groupby(['Beat']).size().to_frame('total')

Однако это приводит к:

Beat   Priority  Count  Total   
01X    1.0       394    NaN
       2.0       1816   NaN

02X    1.0       644    NaN
       2.0       1970   NaN

02Y    1.0       661    NaN
       2.0       2309   NaN

                    ...

Заранее спасибо.

(Я перепечатал этот вопрос, чтобы устранить путаницу, возникшую ранее).

1 Ответ

2 голосов
/ 02 октября 2019

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

Это то, что вы хотели

df = pd.DataFrame([('ST&SAN P...', '1.0', '06X', '1.0', 'PDOA', 'POSSIBLE DEAD PERSON'), ('ST&HANNAH ST', '1.0', '07X', '1.0', '415GS', '415 GUNSHOTS'), ('ST&MARKET ST', '1.0', '07X', '2.0', '415GS', '415 GUNSHOTS'), ('PRENTISS ST', '2.0', '06X', '2.0', '415GS', '415 GUNSHOTS'), ('AV&FOOTH...', '2.0', '07X', '1.0', '415GS', '415 GUNSHOTS')], columns=('Location', 'Area-Id', 'Beat', 'Priority', 'Type-Id', 'Incident Type Description'))
df2 = df.groupby(["Beat", "Priority"])[["Location"]].count() \
    .rename(dict(Location="Count"), axis=1).reset_index()

df2.merge(df2.groupby("Beat").sum(), on="Beat", suffixes=("", "_Total")) \
    .sort_values("Count_Total", ascending=False)

Результат

    Beat    Priority    Count   Count_Total
2   07X 1.0 2   3
3   07X 2.0 1   3
0   06X 1.0 1   2
1   06X 2.0 1   2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...