Легко получить многоуровневый групповой результат, подобный этому
Max Speed
Animal Type
Falcon Captive 390.0
Wild 350.0
Parrot Captive 30.0
Wild 20.0
Код будет выглядеть как df.groupby(['animal', 'type'])['speed'].max()
Однако, если я хочу добавить общую строку в каждую подгруппу, чтобы создать что-то вроде этого
Max Speed
Animal Type
Falcon Captive 390.0
Wild 350.0
overall 390.0
Parrot Captive 30.0
Wild 20.0
overall 30.0
Как мне это сделать?
Причина добавления строки подуровня заключается в том, что она позволяет выбирать категорию, когда я помещаю ее в инструменты BI для других коллег.
ОБНОВЛЕНИЕ: в приведенном выше примере я показываю с помощью max()
, я также хочу знать, как это сделать с помощью user_id.nunique()
.
Прямо сейчас я получаю результат по 2 группам, а затем объединяю их. что-то вроде
df1 = df.groupby(['animal', 'type'])['speed'].max()
df2 = df.groupby(['animal'])['speed'].max()
##### ... manually add `overall` index to df_2
df_total = pd.concat([df1, df2]).sort_index()
но это кажется слишком ручным, есть ли лучший подход?
.nunique()
в качестве метода агрегации, будет ли этот подход по-прежнему действителен? 24.07.2019