Question gestion durée total dataframe

Résolu/Fermé
Nherro - Modifié le 29 sept. 2022 à 14:25
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 29 sept. 2022 à 18:47

Bonjour a vous. 

Je viens chercher votre aide sur comment gérer des durées dans une DataFrame. Ma colonne ressemble à ceci :

20 minutes 
1 heures 
0 secondes 
1 heures 15 minutes
etc...

... sachant que les unités ne sont pas toujours affichées, si elle ne sont pas utilisées. 

Je pensais faire une extraction avant un mot clé ou ajouter à toutes les lignes les 3 unités (heures minutes secondes).

Dans les 2 cas je ne sais pas comment m'y prendre. Si vous pouvez me guider vers une fonction, si cela est possible. 

Merci d'avance. 

A voir également:

1 réponse

mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
29 sept. 2022 à 14:42

Bonjour,

Le plus simple est de passer par une expression rationnelle pour extraire l'éventuelle nombre d'heures, de minutes, de secondes. Il faudrait juste clarifier ce que tu entends pas "les unités ne sont pas toujours affichées si elles ne sont pas utilisées".

Dans tous les cas, le type de données adéquat est datetime.time (voir ce lien) car cela permet de gérer naturellement des données temporelles (tu peux les trier avec <, les utiliser dans un graphe, etc.).

Voici comment tu peux procéder.

#!/usr/bin/env python3

import re
from datetime import time

def to_int(s: str) -> int:
    return 0 if s is None else int(s)

RE_TIME = re.compile(r"((\d+) heures?)?\s*((\d+) minutes?)?\s*((\d+) secondes?)")

def to_time(s: str) -> time:
    m = RE_TIME.match(s)
    if not m:
        return None
    hh = to_int(m.group(2))
    mm = to_int(m.group(4))
    ss = to_int(m.group(6))
    return time(hour=hh, minute=mm, second=ss)

for s in [
    "1 heure 20 secondes",
    "2 minutes 34 secondes",
    "5 heures 16 minutes 27 secondes"
]:
    print(to_time(s))

Résultat :

01:00:20
00:02:34
05:16:27

Bonne chance

0

Hello, merci de ton retour 

Je ne savais pas comment faire du fait que j'ai des cellules avec uniquement les minutes d'affiché, ou uniquement l'heure. 

Je vais regarder ce que tu m'a proposé.

Merci encore. 

0
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812 > Nherro
29 sept. 2022 à 18:47

Ok, je bascule le sujet en résolu, mais si tu as besoin de précision sur cette question, n'hésite pas à demander.

1