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

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *