Maison >développement back-end >Tutoriel Python >Comment sélectionner efficacement des lignes DataFrame dans une plage de dates spécifique en 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!