Maison > développement back-end > Tutoriel Python > Comment filtrer efficacement les lignes DataFrame par plage de dates ?

Comment filtrer efficacement les lignes DataFrame par plage de dates ?

Barbara Streisand
Libérer: 2024-12-12 16:30:11
original
927 Les gens l'ont consulté

How to Efficiently Filter DataFrame Rows by Date Range?

Interroger les lignes d'un DataFrame dans une plage de dates spécifiée

Cette question aborde le défi de l'extraction de lignes dans une plage de dates particulière à partir d'un DataFrame contenant un colonne de date. La solution fournie propose deux approches pour y parvenir.

Méthode 1 : Utilisation d'un masque booléen

Pour adopter cette méthode, assurez-vous que la « date » dans votre DataFrame représente un Série avec dtype datetime64[ns]. Suivez les étapes suivantes :

  1. Créez un masque booléen : Spécifiez les paramètres start_date et end_date qui peuvent être datetime.datetimes, np.datetime64s, pd.Timestamps ou datetime chaînes. Construisez un masque booléen qui est évalué comme True pour les lignes qui répondent aux critères de plage de dates.
  2. Sélectionnez le sous-DataFrame : Utilisez df.loc[mask] pour extraire les lignes qui satisfont à la condition de masque. . Alternativement, pour écraser le DataFrame existant, appliquez le masque comme df = df.loc[mask].

Méthode 2 : attribution d'un DatetimeIndex

Optimal pour Dans les scénarios impliquant des sélections de dates fréquentes, cette approche implique de définir la colonne de date comme index :

  1. Set DatetimeIndex : Convertissez la colonne de date en DatetimeIndex à l'aide de df.set_index(['date']).
  2. Sélectionnez les lignes par date : Utilisez df.loc[start_date:end_date] pour filtrer les lignes en fonction de la plage de dates. Notez que start_date et end_date sont inclus dans cette sélection.

Exemple :

En utilisant le code fourni dans la réponse, considérez l'illustration suivante :

import pandas as pd

df = pd.DataFrame({'date': pd.date_range('2023-03-01', periods=10)})
df['value'] = np.random.randn(10)

# Boolean Mask Approach
start_date = '2023-03-03'
end_date = '2023-03-08'
mask = (df['date'] > start_date) & (df['date'] <= end_date)
df_subset = df.loc[mask]

# DatetimeIndex Approach
df = df.set_index('date')
df_subset = df.loc[start_date:end_date]
Copier après la connexion

Cela produirait deux DataFrames contenant des lignes correspondant à la plage de dates spécifiée.

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!

source:php.cn
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