Maison > développement back-end > Tutoriel Python > Comment convertir un DateTimeIndex compatible avec le fuseau horaire Pandas en un horodatage naïf dans un fuseau horaire spécifique ?

Comment convertir un DateTimeIndex compatible avec le fuseau horaire Pandas en un horodatage naïf dans un fuseau horaire spécifique ?

Mary-Kate Olsen
Libérer: 2024-11-04 12:18:30
original
1033 Les gens l'ont consulté

How to Convert a Pandas Timezone-Aware DateTimeIndex to a Naive Timestamp in a Specific Timezone?

Convertir Pandas Timezone-Aware DateTimeIndex en horodatage naïf dans le fuseau horaire spécifié

Pandas propose la fonction tz_localize pour créer un horodatage ou un DateTimeIndex prenant en compte le fuseau horaire . Mais que faire si vous souhaitez annuler cette opération ? Comment convertir un horodatage prenant en compte le fuseau horaire en un horodatage naïf sans modifier son fuseau horaire ?

Problème :

Considérons un DateTimeIndex prenant en compte le fuseau horaire :

<code class="python">t = pd.date_range(start="2013-05-18 12:00:00", periods=10, freq='s', tz="Europe/Brussels")</code>
Copier après la connexion

Régler le fuseau horaire sur Aucun supprime le fuseau horaire mais convertit les horodatages en UTC, modifiant l'heure visible.

Solution (Pandas 0.15.0) :

Depuis Pandas 0.15.0, la méthode tz_localize peut être utilisée pour définir le fuseau horaire sur Aucun. Cela supprime les informations de fuseau horaire tout en préservant l'heure locale :

<code class="python">t.tz_localize(None)</code>
Copier après la connexion

Cela donne une heure locale naïve DateTimeIndex.

Alternativement, tz_convert(None) peut être utilisé pour convertir en heure UTC naïve :

<code class="python">t.tz_convert(None)</code>
Copier après la connexion

Performances Considérations :

La méthode tz_localize(None) est nettement plus efficace que l'utilisation d'une boucle pour remplacer les informations de fuseau horaire :

<code class="python">%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</code>
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal