Как найти ближайшее значение в 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: как удалить все строки, кроме некоторых

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *