Maison  >  Article  >  développement back-end  >  Comment convertir un horodatage prenant en compte le fuseau horaire en heure locale naïve dans Pandas ?

Comment convertir un horodatage prenant en compte le fuseau horaire en heure locale naïve dans Pandas ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-05 02:05:01310parcourir

How to Convert a Timezone-Aware Timestamp to Naive Local Time in Pandas?

Comment convertir un horodatage sensible au fuseau horaire en heure locale naïve dans Pandas

Dans Pandas, la fonction tz_localize est utilisée pour créer un horodatage ou DateTimeIndex qui prend en compte le fuseau horaire. Cependant, lorsque vous traitez des données qui prennent déjà en compte le fuseau horaire, il peut s'avérer nécessaire de les reconvertir en un horodatage naïf tout en préservant les informations de fuseau horaire pour l'heure locale.

Une option consiste à définir le fuseau horaire sur Aucun. , mais cela entraîne la conversion de l'heure en UTC. Pour éviter cela, pandas fournit la fonction tz_localize(None), qui supprime efficacement les informations de fuseau horaire tout en préservant l'heure visible par l'utilisateur dans le fuseau horaire local.

Par exemple, considérons le fuseau horaire suivant -aware DateTimeIndex :

t = pd.date_range(start="2013-05-18 12:00:00", periods=2, freq='H', tz="Europe/Brussels")

En utilisant tz_localize(None), nous pouvons le convertir en une heure locale naïve :

t_naive_local = t.tz_localize(None)

L'index résultant aura les mêmes heures qu'avant, mais sans les informations de fuseau horaire :

t_naive_local

DatetimeIndex(['2013-05-18 12:00:00', '2013-05-18 13:00:00'],
               dtype='datetime64[ns]', freq='H')

De plus, pandas fournit également la fonction tz_convert(None), qui supprime les informations de fuseau horaire et convertit l'heure en UTC, ce qui donne une heure UTC naïve.

Cette conversion est nettement plus efficace que l'approche alternative consistant à utiliser la méthode datetime.replace, comme le démontrent les timings suivants :

%timeit t.tz_localize(None)
1000 loops, best of 3: 233 µs per loop

%timeit pd.DatetimeIndex([i.replace(tzinfo=None) for i in t])
10 loops, best of 3: 99.7 ms per loop

En tirant parti de ces fonctions, il est facile de convertir Données pandas prenant en compte le fuseau horaire vers l'heure locale naïve ou UTC, préservant l'heure visible par l'utilisateur et améliorant l'efficacité du traitement des données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn