Pandas : comment sélectionner des lignes entre deux valeurs
Vous pouvez utiliser la syntaxe de base suivante pour sélectionner des lignes dans un DataFrame pandas où une colonne se trouve entre deux valeurs spécifiques :
df_filtered = df[df['points'].between(25, 35)]
Cet exemple particulier sélectionne toutes les lignes dont la valeur dans la colonne de points est comprise entre 25 et 35.
Si vous souhaitez plutôt sélectionner des lignes dont la valeur dans la colonne de points n’est pas comprise entre 25 et 35, vous pouvez ajouter un tilde ( ~ ) avant le nom de la colonne :
df_filtered = df[~df['points'].between(25, 35)]
Les exemples suivants montrent comment utiliser chaque méthode dans la pratique.
Exemple : sélectionner des lignes entre deux valeurs dans Pandas
Supposons que nous ayons le DataFrame pandas suivant qui contient des informations sur les points marqués par les joueurs de basket-ball de différentes équipes :
import pandas as pd #create DataFrame df = pd.DataFrame({'team': ['Mavs', 'Mavs', 'Nets', 'Nets', 'Heat', 'Heat', 'Kings'], 'points': [22, 28, 35, 34, 29, 28, 23]}) #view DataFrame print(df) team points 0 Mavs 22 1 Mavs 28 2 Nets 35 3 Nets 34 4 Heat 29 5 Heat 28 6 Kings 23
Nous pouvons utiliser la syntaxe suivante pour sélectionner uniquement les lignes du DataFrame où la valeur dans la colonne des points est comprise entre 25 et 35 :
#select rows where value in points column is between 25 and 35
df_filtered = df[df['points'].between(25, 35)]
#view filtered DataFrame
print(df_filtered)
team points
1 Mavs 28
2 Nets 35
3 Nets 34
4 Heat 29
5 Heat 28
Notez que seules les lignes dont la valeur dans la colonne des points est comprise entre 25 et 35 ont été sélectionnées.
Notez que la fonction between() inclut les valeurs dans les limites inférieure et supérieure.
Par exemple, le joueur avec une valeur de points de 35 a été inclus dans le DataFrame filtré.
Si vous souhaitez plutôt sélectionner uniquement les lignes dont la valeur dans la colonne des points n’est pas comprise entre 25 et 35, nous pouvons ajouter un tilde ( ~ ) avant le nom de la colonne :
#select rows where value in points column is not between 25 and 35
df_filtered = df[~df['points'].between(25, 35)]
#view filtered DataFrame
print(df_filtered)
team points
0 Mavs 22
6 Kings 23
Notez que seules les lignes dont la valeur dans la colonne des points n’est pas comprise entre 25 et 35 ont été sélectionnées.
Remarque : Vous pouvez trouver la documentation complète de la fonction pandas between() ici .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans les pandas :
Pandas : sélectionnez les lignes où deux colonnes sont égales
Pandas : sélectionnez des lignes de DataFrame à l’aide d’une série booléenne
Pandas : sélectionnez des lignes avec des valeurs NaN