Датафрейм сгруппирован в новый фрейм - PullRequest
0 голосов
/ 09 марта 2020

У меня есть таблица, как показано ниже.

Month,Count,Parameter  
March 2015,1,40  
March 2015,1,10  
March 2015,1,1  
March 2015,1,25  
March 2015,1,50  
April 2015,1,15  
April 2015,1,1  
April 2015,1,1  
April 2015,1,15  
April 2015,1,15  

Мне нужно создать новую таблицу сверху, как показано ниже.

Unique Month,Total Count,<=30  
March 2015,5,3  
April 2015,5,5  

Лог c для новой таблицы: следующее. Столбец «Уникальный месяц» является уникальным месяцем из исходной таблицы и должен быть отсортирован. «Общее количество» - это сумма столбца «Количество» из исходной таблицы за конкретный месяц. Столбец «<= 30» является счетчиком «Параметра <= 30» для этого конкретного месяца. </p>

Есть ли простой способ сделать это в кадрах данных?

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

1 Ответ

0 голосов
/ 09 марта 2020

IIU C, просто проверьте на Parameter < 30 и затем на групповом:

(df.assign(le_30=df.Parameter.le(30))
   .groupby('Month', as_index=False) # pass sort=False if needed
   [['Count','le_30']].sum()
)

Или

(df.Parameter.le(30)
   .groupby(df['Month'])   # pass sort=False if needed
   .agg(['count','sum'])
)

Выход:

    Month       Count   le_30
0   April 2015      5   5.0
1   March 2015      5   3.0

Обновление : как указано выше, добавление sort=False к groupby будет соответствовать исходной сортировке Month. Например:

(df.Parameter.le(30)
   .groupby(df['Month'], sort=False)
   .agg(['count','sum'])
   .reset_index()
)

Вывод:

        Month  count  sum
0  March 2015      5  3.0
1  April 2015      5  5.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...