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

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

Patricia Arquette
Patricia Arquetteoriginal
2024-12-13 13:11:09299parcourir

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

Sélection de lignes DataFrame dans une plage de dates

En Python, les DataFrames sont un outil puissant pour stocker et manipuler des données tabulaires. Une tâche courante consiste à filtrer les lignes en fonction d'une plage de dates spécifiée. Pour ce faire, nous disposons des options suivantes :

Méthode 1 : Utiliser un masque booléen

Si votre DataFrame contient une colonne de date avec le type de données datetime64[ns], vous pouvez créer un masque booléen pour sélectionner les lignes qui se situent dans la plage souhaitée :

# Ensure date column is a datetime64 series
df['date'] = pd.to_datetime(df['date']) 

# Create a boolean mask
mask = (df['date'] > start_date) & (df['date'] <= end_date)

# Select the sub-DataFrame
sub_df = df.loc[mask]

Méthode 2 : Définir un DatetimeIndex

Une autre approche efficace consiste à définir la colonne de date comme index du DataFrame, en créant un DatetimeIndex :

df = df.set_index(['date'])

# Select rows using index slicing
sub_df = df.loc[start_date:end_date]

Cette méthode est particulièrement utile pour les sélections basées sur la date, car elles offrent des performances plus rapides par rapport à l'utilisation d'un booléen masque.

Exemple :

Considérez le DataFrame suivant :

>>> df
            value  date
0          0.2   2021-06-01
1          0.3   2021-06-05
2          0.4   2021-06-10
3          0.5   2021-06-15

Pour sélectionner des lignes pour le mois de juin 2021, nous pouvons utiliser soit méthode :

Méthode 1 : Booléenne Mask

mask = (df['date'] > '2021-06-01') & (df['date'] <= '2021-06-30')
sub_df = df.loc[mask]

Méthode 2 : DatetimeIndex

df = df.set_index(['date'])
sub_df = df.loc['2021-06-01':'2021-06-30']

Les deux méthodes renverront le sous-DataFrame suivant :

>>> sub_df
            value  date
0          0.2   2021-06-01
1          0.3   2021-06-05
2          0.4   2021-06-10
3          0.5   2021-06-15

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