Maison >développement back-end >Tutoriel Python >Comment sélectionner efficacement des lignes DataFrame dans une plage de dates spécifique dans Pandas ?

Comment sélectionner efficacement des lignes DataFrame dans une plage de dates spécifique dans Pandas ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-14 08:36:16331parcourir

How to Efficiently Select DataFrame Rows Within a Specific Date Range in Pandas?

Sélectionner des lignes DataFrame entre deux dates

Introduction

Lorsque vous travaillez avec des données de séries chronologiques , il est souvent nécessaire de sélectionner des lignes spécifiques en fonction de plages de dates. Cet article explore deux méthodes pour y parvenir dans les DataFrames pandas.

Méthode 1 : Masque booléen

  1. Assurez-vous que la colonne de date est une série avec un type datetime64[ns] :

    df['date'] = pd.to_datetime(df['date'])
  2. Créer un masque booléen utilisant des opérateurs de comparaison avec les dates de début et de fin :

    mask = (df['date'] > start_date) & (df['date'] <= end_date)
  3. Sélectionnez le sous-DataFrame à l'aide du masque :

    df.loc[mask]
  4. Facultativement , réattribuez le sous-DataFrame à df.

Méthode 2 : DatetimeIndex

  1. Définissez la colonne de date comme index :

    df = df.set_index(['date'])
  2. Découpez le DataFrame en utilisant la date plages :

    df.loc[start_date:end_date]

Exemple

Considérons un DataFrame avec une colonne de date. Le code suivant utilise la méthode du masque booléen pour sélectionner les lignes entre '2000-06-01' et '2000-06-10' :

import pandas as pd

df = pd.DataFrame({
    'date': pd.date_range('2000-1-1', periods=200, freq='D'),
    'value': np.random.rand(200)
})

mask = (df['date'] > '2000-06-01') & (df['date'] <= '2000-06-10')
result_df = df[mask]

Le résultat inclut les lignes du 1er au 10 juin, 2000.

Comparaison

  • La méthode du masque booléen est plus flexible et permet des comparaisons de dates plus complexes.
  • La méthode DatetimeIndex est plus rapide pour les sélections de plages de dates répétitives.
  • Utilisation de parse_dates dans pd.read_csv peut éviter d'avoir à convertir la colonne de date en datetime64s.

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