группа в среднем нет часов - PullRequest
       4

группа в среднем нет часов

0 голосов
/ 08 октября 2018

У меня есть данные df:

month   name    duration
5       abc     09:03:00
5       abc     09:09:00
5       eef     10:03:00
5       eef     09:03:00
5       eef     09:03:00
5       ttk     10:03:00
5       abc     09:03:00
5       ttk     09:23:00
6       ttk     09:03:00
6       abc     11:03:00

Мне нужно сгруппировать это, чтобы получить такие результаты:

month   name    name_size   name_nuique duration_mean
5       abc     3           1           09:05:00
        eef     3           1           09:23:00
        ttk     2           1           09:43:00
6       abc     1           1           09:03:00
        ttx     1           1           11:03:00

Пожалуйста, дайте мне знать, как это сделать.Я пытался сделать

df.groupby(['month','name'], sort=False).agg({'name':['size','nunique'],
          'duration':['mean']})

Но я получаю сообщение об ошибке:

Нет числовых типов для агрегирования

1 Ответ

0 голосов
/ 08 октября 2018

Стандартные панды mean() не могут обрабатывать timedeltas.После преобразования столбца в timedeltas примените к нему пользовательскую лямбда-функцию:

df["duration"] = pd.to_timedelta(df["duration"])
df.groupby(["month", "name"], sort=False).agg({
                               "name": ["size", "nunique"],
                               "duration": [lambda x: x.mean()]})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...