2017-07-21 2 views
1

j'ai grand dataframe (df) qui ressemble à:
agrégations pour les valeurs timedelta dans la trame de données Python

 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 

je dois calculer 'date_diff' moyenne (en format timedelta) pour chaque numéro de compte.
df.date_diff.mean() fonctionne correctement. Mais quand j'essaie prochaine:
df.groupby('Acc_num').date_diff.mean() il déclenche une exception:

"DataError: No numeric types to aggregate"

J'ai aussi essayé df.pivot_table() méthode, mais n'a pas atteind quoi que ce soit.

Quelqu'un pourrait m'aider avec ce genre de choses. Merci d'avance!

Répondre

0

Bizarre limitation en effet. Mais une solution simple serait:

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

Edit:
Pandas tentera effectivement d'agréger les colonnes non numériques si vous passez numeric_only=False

df.groupby('Acc_num').date_diff.mean(numeric_only=False)