3
votes

Conversion en datetime en python

J'ai des données d'heure dans une colonne et j'essaie de comprendre comment puis-je l'obtenir au format datetime

   eg: da =  pd.to_datetime(100, format='%H%M')
   output: '10:00:00'

Ma question est de savoir comment les obtenir au format datetime: p >

la sortie doit être:

1. da =  pd.to_datetime(330, format='%H%M')
   output: '03:30:00'

2. d= str(datetime.timedelta(minutes = 55 ))
   output : '0:55:00'

essayé:

20:00:00
21:00:00
23:00:00
23:55:00
00:00:00
00:01:00
00:05:00
00:10:00
01:00:00
01:05:00
03:30:00

Mais si j'applique 1. à 100, cela donne 10 heures.

2000
2100
2300
2355
0
1
5 
10
100
105
330


1 commentaires

Votre question reçoit déjà trois réponses! Agréable.


3 Réponses :


2
votes

IIUC str.rjust

pd.to_datetime(s.astype(str).str.rjust(4,'0'),format='%H%M').dt.time
Out[41]: 
0     20:00:00
1     21:00:00
2     23:00:00
3     23:55:00
4     00:00:00
5     00:01:00
6     00:05:00
7     00:10:00
8     01:00:00
9     01:05:00
10    03:30:00
Name: x, dtype: object


1 commentaires

peut-être que zfill pourrait être sympa



3
votes

Essayez ,

pd.to_datetime(df['time'].astype(str).str.zfill(4), format = '%H%M').dt.time


0     20:00:00
1     21:00:00
2     23:00:00
3     23:55:00
4     00:00:00
5     00:01:00
6     00:05:00
7     00:10:00
8     01:00:00
9     01:05:00
10    03:30:00


1 commentaires

à l'origine, quand j'ai chargé les données de test, c'était dtype: int64 Je pensais changer cela en int64, mais ensuite j'ai réalisé que to_datetime avait besoin d'une chaîne. :)



0
votes

Depuis le code novice, je rends les choses plus explicites et j'ajoute les lettres de formatage % H et % M info:

df['cname'] = pd.to_datetime(df['cname'].astype(str).str.zfill(4), format = '%H%M').dt.time
print(df['cname'])

# %H    Hour (24-hour clock) as a zero-padded decimal number.   07
# %M    Minute as a zero-padded decimal number.     06

p>


0 commentaires