Группировка с помощью условия в питоне панд - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть таблица с подробной информацией о имени, приоритете, дате_ времени

Name       Priority                      Date_Time   
ABC         P1                   01/02/2017  06:30  
BC          P2                   02/04/2017   14:50  
XX          P1                   04/06/2017  02:00   
ANM         P2                   03/05/2017  22:15  
MAC         P1                   04/05/2017 16:40

Мне нужно написать код для подсчета имени с групповой приоритетностью и времени с условием определенного времени.например с 6:00 до 12:00, с 12:00 до 22:00, и т. д.Как получить общее количество имен на основе приоритета с определенным временем?

1 Ответ

0 голосов
/ 03 декабря 2018

Панды groupby поддерживает группирование по наборам столбцов.То, что вы хотите, может быть достигнуто путем сначала отображения даты и времени в группы, а затем группировки по этому новому отображению, составленному из Priority.Например,

def group_datetimes(dt):
    if 0 <= dt.hour < 6:
        return 1
    elif 6 <= dt.hour < 12:
        return 2
    # etc.

df['datetime_group'] = df['Date_Time'].apply(group_datetimes)
agg = df.groupby(['Priority', 'datetime_group']).count()

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

def group_datetimes(dt):
    if 0 <= dt.hour < 6:
        return 1
    elif 6 <= dt.hour < 12:
        return 2
    # etc.

agg = df.groupby(['Priority', group_datetimes]).count()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...