Come trovare il valore più vicino in pandas dataframe (con esempio)


È possibile utilizzare la seguente sintassi di base per trovare la riga in un DataFrame panda che contiene il valore più vicino a un valore specificato in una particolare colonna:

 #find row with closest value to 101 in points column
df_closest = df. iloc [(df[' dots ']- 101 ). abs (). argsort ()[:1]]

L’esempio seguente mostra come utilizzare questa sintassi nella pratica.

Esempio: trova il valore più vicino in Pandas DataFrame

Supponiamo di avere il seguente DataFrame panda che contiene il numero di punti segnati da diverse squadre di basket:

 import pandas as pd

#createDataFrame
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

Supponiamo ora di voler selezionare la riga del DataFrame che contiene un valore nella colonna punto più vicino a 101 .

Possiamo usare la seguente sintassi per fare questo:

 #find row with closest value to 101 in points column
df_closest = df. iloc [(df[' dots ']- 101 ). abs (). argsort ()[:1]]

#view results
print (df_closest)

   team points
1 Nets 100

Dal risultato possiamo vedere che i Nets hanno un valore nella colonna dei punti più vicino a 101 .

Nota che potremmo anche usare tolist() per visualizzare solo il valore più vicino invece dell’intera riga nel DataFrame panda:

 #display value closest to 101 in the points column
df_closest[' points ']. tolist ()

[100]

Tieni inoltre presente che possiamo modificare il valore dopo la funzione argsort() per trovare più valori più vicini.

Ad esempio, possiamo utilizzare la seguente sintassi per trovare le righe nel DataFrame con i 2 valori più vicini a 101 nella colonna dei punti :

 #find rows with two closest values to 101 in points column
df_closest2 = df. iloc [(df[' dots ']- 101 ). abs (). argsort ()[:2]]

#view results
print (df_closest2)

   team points
1 Nets 100
0 Mavs 99

Dal risultato possiamo vedere che i Nets hanno il valore più vicino a 101 nella colonna dei punti , mentre i Mavs hanno il valore più vicino a 101 nella colonna dei punti .

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni dei panda:

Panda: come selezionare le righe in base ai valori delle colonne
Panda: come combinare righe con gli stessi valori di colonna
Panda: come eliminare tutte le righe tranne alcune

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *