Angenommen, ich habe den folgenden Datenrahmen:

             col1       col2
0               0       0.53
1               1       0.52

Wie finde ich den Wert col1 und den Wert col2 für die Zeile, deren Wert col2 z. 0.6? Für das gegebene Beispiel wäre das gewünschte Ergebnis:

closest_col1 = 0
closest_col2 = 0.53
1
Tokyo 7 Feb. 2020 im 18:51

3 Antworten

Beste Antwort

Das Folgende sollte den Trick machen:

closest_row = df.iloc[(df['col2'] - 0.6).abs().argsort()[:1]]
closest_col1 = closest_row[0][0]
closest_col2 = closest_row[0][1]

Und nun:

>> print(closest_col1)
>> print(closest_col2)
>> 0
>> 0.53
1
Giorgos Myrianthous 7 Feb. 2020 im 16:15

Sie können idxmin verwenden:

closest_index = (data.col1 - data.col2).abs().idxmin()
print(data.loc[closest_index, :])
1
benji 7 Feb. 2020 im 15:57

Wenn Sie df.loc[(df.col2 - 0.6).abs().idxmin()] verwenden, erhalten Sie die gewünschte Zeile

1
tdpr 7 Feb. 2020 im 15:55