Агрегации для значений Timedelta в Python DataFrame

У меня есть большой DataFrame (df), который выглядит так:

  Acc_num date_diff
0   29  0:04:43
1   29  0:01:43
2   29  2:22:45
3   29  0:16:21
4   29  0:58:20
5   30  0:00:35
6   34  7:15:26
7   34  4:40:01
8   34  0:56:02
9   34  6:53:44
10  34  1:36:58
.....
Acc_num                    int64
date_diff        timedelta64[ns]
dtype: object

Мне нужно рассчитать среднее значение 'date_diff' (в формате timedelta) для каждого номера счета.
df.date_diff.mean() работает правильно. Но когда я пытаюсь выполнить следующее:
df.groupby('Acc_num').date_diff.mean(), возникает исключение:

"DataError: No numeric types to aggregate"

Я также пробовал метод df.pivot_table(), но ничего не добился.

Может ли кто-нибудь помочь мне с этим материалом. Заранее спасибо!


person I.Koropetskyi    schedule 21.07.2017    source источник


Ответы (1)


Странное ограничение на самом деле. Но простым решением будет:

df.groupby('Acc_num').date_diff.agg(lambda g:g.sum()/g.count())

Изменить:
Pandas фактически попытается агрегировать нечисловые столбцы, если вы передадите numeric_only=False

df.groupby('Acc_num').date_diff.mean(numeric_only=False)
person Adrien Matissart    schedule 21.07.2017