So finden sie den nächstgelegenen wert im pandas dataframe (mit beispiel)


Sie können die folgende grundlegende Syntax verwenden, um die Zeile in einem Pandas-DataFrame zu finden, die den Wert enthält, der einem in einer bestimmten Spalte angegebenen Wert am nächsten kommt:

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

Das folgende Beispiel zeigt, wie diese Syntax in der Praxis verwendet wird.

Beispiel: Finden Sie den nächstgelegenen Wert im Pandas DataFrame

Angenommen, wir haben den folgenden Pandas-DataFrame, der die Anzahl der von verschiedenen Basketballteams erzielten Punkte enthält:

 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

Nehmen wir nun an, wir möchten die Zeile des DataFrame auswählen, die in der Punktspalte einen Wert enthält, der 101 am nächsten kommt.

Wir können dazu die folgende Syntax verwenden:

 #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

Aus dem Ergebnis können wir ersehen, dass die Netze einen Wert in der Punktespalte haben, der 101 am nächsten kommt.

Beachten Sie, dass wir tolist() auch verwenden könnten, um nur den nächstgelegenen Wert selbst anstelle der gesamten Zeile im Pandas-DataFrame anzuzeigen:

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

[100]

Beachten Sie auch, dass wir den Wert nach der Funktion argsort() ändern können, um mehrere nächstliegende Werte zu finden.

Beispielsweise können wir die folgende Syntax verwenden, um Zeilen im DataFrame zu finden, deren 2 Werte in der Punktespalte am nächsten an 101 liegen:

 #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

Aus dem Ergebnis können wir erkennen, dass die Nets in der Punktespalte den Wert haben, der 101 am nächsten kommt, während die Mavs in der Punktespalte den Wert haben, der 101 am nächsten kommt.

Zusätzliche Ressourcen

In den folgenden Tutorials wird erläutert, wie Sie andere häufige Panda-Aufgaben ausführen:

Pandas: So wählen Sie Zeilen basierend auf Spaltenwerten aus
Pandas: So kombinieren Sie Zeilen mit denselben Spaltenwerten
Pandas: So löschen Sie alle Zeilen außer einigen

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert