2017-03-06 12 views
1

J'ai des données avec des valeurs d'horodatage et je veux arrondir l'horodatage à la minute supérieure.Comment arrondir la colonne timestamp à la minute supérieure dans pandas

Mais je ne reçois pas la sortie désirée. J'ai utilisé le lien suivant pour faire la même chose:

[1]: http://stackoverflow.com/questions/32344533/how-do-i-round-datetime-column-to-nearest-quarter-hour/32344636 

comment puis-je faire cela en utilisant Pandas?

example: output: 
05:06:34 05:07 
05:09:43 05:10 
+1

A [minimale, complète et Vérifiable] (http://stackoverflow.com/help/mcve) par exemple nous rend plus facile pour vous aider. –

+0

Je pense qu'il est répondu [ici] (http://stackoverflow.com/q/42619947/2901002) – jezrael

+0

@StephenRauch Mais je veux arrondir sur la base de la valeur des secondes. – user99

Répondre

1

Vous pouvez écrire une fonction qui arrondir à la minute près:

code:

import datetime as dt 
def round_up_to_minute(timestamp): 
    return timestamp + dt.timedelta(
     seconds=60-timestamp.second, 
     microseconds=-timestamp.microsecond) 

Code d'essai:

Pour l'appliquer à un dataframe, vous pouvez faire quelque chose comme:

now = dt.datetime.now() 
now_plus = now + dt.timedelta(minutes=1) 
df = pd.DataFrame(data=[[now, now], [now_plus, now_plus]], 
        columns=['datetime', 'datetime_rounded']) 

df['datetime_rounded'] = df['datetime_rounded'].apply(round_up_to_minute) 

print(df) 

Résultats:

    datetime datetime_rounded 
0 2017-03-06 07:36:54.794 2017-03-06 07:37:00 
1 2017-03-06 07:37:54.794 2017-03-06 07:38:00 
+0

Merci. Cela a fonctionné pour moi. – user99