2017-01-21 1 views
1

J'utilise pandas géantstimedelta objets à garder une trace des temps intermédiaires dans des données relatives sportives définies à l'aide du type de construction suivante:Comment mettre en forme un objet pandas timedelta?

import pandas as pd 
pd.to_timedelta("-0:0:1.0") 

Cette fonction rend compte nativement comme:

-1 days +23:59:59

Je peux obtenir le nombre de secondes brutes en utilisant pd.to_timedelta("-0:0:1.0").total_seconds() mais c'est difficile lorsque le montant négatif est en minutes ou en heures:

Pour l'expression:

pd.to_timedelta("-1:2:3.0") 

comment puis-je obtenir le rapport formaté comme "-1:2:3.0 ou -1 hour, 2 minutes, 3 seconds, de l'objet timedelta, plutôt que sous la forme -3723.0000000000005 (avec une erreur de flotteur) ou -1 days +22:57:57?

Répondre

0

Est-ce ce que vous voulez?

In [223]: df 
Out[223]: 
       delta 
0 -1 days +23:59:59 
1 -1 days +22:57:57 
2   00:00:11 

In [224]: df.delta.abs().dt.components 
Out[224]: 
    days hours minutes seconds milliseconds microseconds nanoseconds 
0  0  0  0  1    0    0   0 
1  0  1  2  3    0    0   0 
2  0  0  0  11    0    0   0 
+0

Doh! D'accord, oui ... si négatif, prenez l'absolu. La méthode des composants est très pratique ... Ce que je cherchais vraiment, c'était une façon de contrôler le format d'affichage de l'objet delta en utilisant quelque chose comme le formatage 'strftime'. – psychemedia