Как найти ближайшее значение в dataframe pandas (с примером)
Вы можете использовать следующий базовый синтаксис, чтобы найти строку в DataFrame pandas, которая содержит значение, наиболее близкое к значению, указанному в определенном столбце:
#find row with closest value to 101 in points column df_closest = df. iloc [(df[' dots ']- 101 ). abs (). argsort ()[:1]]
В следующем примере показано, как использовать этот синтаксис на практике.
Пример: найти ближайшее значение в Pandas DataFrame
Предположим, у нас есть следующий DataFrame pandas, который содержит количество очков, набранных разными баскетбольными командами:
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
Теперь предположим, что мы хотим выбрать строку DataFrame, содержащую значение в столбце с точками , ближайшее к 101 .
Для этого мы можем использовать следующий синтаксис:
#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
Из результата мы видим, что Нетс имеют значение в столбце очков, ближайшее к 101 .
Обратите внимание, что мы также могли бы использовать tolist() для отображения только самого ближайшего значения вместо всей строки в DataFrame pandas:
#display value closest to 101 in the points column df_closest[' points ']. tolist () [100]
Также обратите внимание, что мы можем изменить значение после функции argsort() , чтобы найти несколько ближайших значений.
Например, мы можем использовать следующий синтаксис для поиска строк в DataFrame с двумя значениями, ближайшими к 101, в столбце точек :
#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
Из результата мы видим, что «Нетс» имеют ближайшее значение к 101 в столбце очков , а «Мавс» имеют самое близкое значение к 101 в столбце очков .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи panda:
Pandas: как выбирать строки на основе значений столбца
Pandas: как объединить строки с одинаковыми значениями столбцов
Pandas: как удалить все строки, кроме некоторых