J'ai une chaîne d'horodatage telle que:
2019-01-04 21:15:00
Je voudrais convertir cela en un entier de la forme MMDDHH, arrondi à l'heure la plus proche. Dans ce cas, le résultat serait:
10421
La solution datetime Python est préférée, mais Pandas fonctionne aussi.
3 Réponses :
On dirait que ceci a déjà une réponse sur StackOverflow ..
Conversion d'un objet datetime en python entier < / p>
Je l'ai essayé et cela fonctionne pour moi.
Ce n'est pas la même question. Il y a aussi une certaine conversion, oui, mais l'arrondissement de cette question rend votre discussion liée ne suffit pas pour une réponse complète.
Faire avec round + strftime
s=pd.Series(['2019-01-04 21:15:00','2019-01-04 21:15:00','2019-01-04 21:15:00'])
Entrée de données
pd.to_datetime(s).dt.round('H').dt.strftime('%m%d%H')
Out[249]:
0 010421
1 010421
2 010421
dtype: object
Si propre, cela devrait être la réponse imo.
Utilisez la bibliothèque datetime : XXX
Pour une solution avec arrondi, essayez cette fonction:
>>> def datestr2int(datestring):
... d = dt.datetime.strptime(datestring, '%Y-%m-%d %H:%M:%S')
... if d.minute >= 30:
... d = d + dt.timedelta(minutes=30)
... else:
... pass
... s = dt.datetime.strftime(d, '%m%d%H')
... return int(s)
...
>>> datestr2int('2019-01-04 21:15:00')
10421
>>> datestr2int('2019-01-04 21:30:00')
10422
>>> datestr2int('2019-01-04 23:35:00')
10500
Vous avez besoin d'un arrondi à l'heure la plus proche, n'est-ce pas?
Oui ... il semble que la réponse acceptée a été modifiée. Conserver la réponse acceptée pour l'utilisation de datetime sur Pandas et la conversion en entier.
Si vous préférez python, vous pouvez supprimer la balise pandas la prochaine fois.