Comment trouver la valeur la plus proche dans Pandas DataFrame (avec exemple)
Vous pouvez utiliser la syntaxe de base suivante pour rechercher la ligne dans un DataFrame pandas qui contient la valeur la plus proche d’une valeur spécifiée dans une colonne particulière :
#find row with closest value to 101 in points column df_closest = df.iloc[(df['points']-101).abs().argsort()[:1]]
L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.
Exemple : Rechercher la valeur la plus proche dans Pandas DataFrame
Supposons que nous ayons le DataFrame pandas suivant qui contient le nombre de points marqués par différentes équipes de basket-ball :
import pandas as pd #create DataFrame df = pd.DataFrame({'team': ['Mavs', 'Nets', 'Hawks', 'Kings', 'Spurs', 'Cavs'], 'points': [99, 100, 96, 104, 89, 93]}) #view DataFrame print(df) team points 0 Mavs 99 1 Nets 100 2 Hawks 96 3 Kings 104 4 Spurs 89 5 Cavs 93
Supposons maintenant que nous souhaitions sélectionner la ligne du DataFrame qui contient une valeur dans la colonne de points la plus proche de 101 .
Nous pouvons utiliser la syntaxe suivante pour ce faire :
#find row with closest value to 101 in points column df_closest = df.iloc[(df['points']-101).abs().argsort()[:1]] #view results print(df_closest) team points 1 Nets 100
À partir du résultat, nous pouvons voir que les Nets ont une valeur dans la colonne des points la plus proche de 101 .
Notez que nous pourrions également utiliser tolist() pour afficher uniquement la valeur la plus proche elle-même au lieu de la ligne entière dans le DataFrame pandas :
#display value closest to 101 in the points column df_closest['points'].tolist() [100]
Notez également que nous pouvons modifier la valeur après la fonction argsort() pour trouver plusieurs valeurs les plus proches.
Par exemple, nous pouvons utiliser la syntaxe suivante pour rechercher les lignes du DataFrame avec les 2 valeurs les plus proches de 101 dans la colonne des points :
#find rows with two closest values to 101 in points column df_closest2 = df.iloc[(df['points']-101).abs().argsort()[:2]] #view results print(df_closest2) team points 1 Nets 100 0 Mavs 99
À partir du résultat, nous pouvons voir que les Nets ont la valeur la plus proche de 101 dans la colonne des points , tandis que les Mavs ont la valeur la plus proche de 101 dans la colonne des points .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes chez les pandas :
Pandas : comment sélectionner des lignes en fonction des valeurs des colonnes
Pandas : comment combiner des lignes avec les mêmes valeurs de colonne
Pandas : comment supprimer toutes les lignes sauf certaines