Pandas : Comment sélectionner des lignes de DataFrame par horodatage
Vous pouvez utiliser la syntaxe de base suivante pour sélectionner des lignes entre deux horodatages dans un DataFrame pandas :
df[(df['tstamp'] > '2022-10-25 04:30:00') & (df['tstamp'] < '2022-10-27 11:00:00')]
Cette syntaxe suppose que tstamp a déjà un type datetime.
Si ce n’est pas le cas, vous pouvez utiliser la syntaxe suivante pour la convertir en colonne datetime :
df['tstamp'] = pd.to_datetime(df['tstamp'])
L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.
Exemple : sélectionner des lignes de Pandas DataFrame par horodatage
Supposons que nous ayons le DataFrame pandas suivant qui contient des informations sur les ventes dans un magasin de détail :
import pandas as pd #create DataFrame df = pd.DataFrame({'tstamp': ['2022-10-25 04:00:00', '2022-10-25 11:55:12', '2022-10-26 02:00:00', '2022-10-27 10:30:00', '2022-10-27 14:25:00', '2022-10-28 01:15:27'], 'sales': [18, 22, 19, 14, 14, 11]}) #view DataFrame print(df) tstamp sales 0 2022-10-25 04:00:00 18 1 2022-10-25 11:55:12 22 2 2022-10-26 02:00:00 19 3 2022-10-27 10:30:00 14 4 2022-10-27 14:25:00 14 5 2022-10-28 01:15:27 11
Supposons que nous souhaitions sélectionner uniquement les lignes situées entre les deux horodatages suivants :
- 2022-10-25 04:30:00
- 2022-10-27 11:00:00
Nous pouvons utiliser la syntaxe suivante pour ce faire :
#convert timestamp column to datetime dtype df['tstamp'] = pd.to_datetime(df['tstamp']) #select rows between two timestamps df[(df['tstamp'] > '2022-10-25 04:30:00') & (df['tstamp'] < '2022-10-27 11:00:00')] tstamp sales 1 2022-10-25 11:55:12 22 2 2022-10-26 02:00:00 19 3 2022-10-27 10:30:00 14
Notez que seules les lignes entre les deux horodatages que nous avons spécifiés sont sélectionnées.
Notez également que vous pouvez sélectionner des lignes par horodatage en utilisant uniquement une valeur de date.
Par exemple, nous pourrions utiliser le code suivant pour sélectionner toutes les lignes dont l’horodatage est supérieur au 2022-10-27 :
#convert timestamp column to datetime dtype df['tstamp'] = pd.to_datetime(df['tstamp']) #select rows with timestamp after 2022-10-27 df[df['tstamp'] > '2022-10-27'] tstamp sales 3 2022-10-27 10:30:00 14 4 2022-10-27 14:25:00 14 5 2022-10-28 01:15:27 11
Notez que seules les lignes dont la valeur dans la colonne tsamp est postérieure au 2022-10-27 sont sélectionnées.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans les pandas :
Comment convertir DateHeure en date dans Pandas
Comment convertir des colonnes en DateTime dans Pandas
Comment trier un DataFrame Pandas par date