Como encontrar o valor mais próximo no pandas dataframe (com exemplo)


Você pode usar a seguinte sintaxe básica para encontrar a linha em um DataFrame do pandas que contém o valor mais próximo de um valor especificado em uma coluna específica:

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

O exemplo a seguir mostra como usar essa sintaxe na prática.

Exemplo: Encontre o valor mais próximo no Pandas DataFrame

Suponha que temos o seguinte DataFrame do pandas que contém o número de pontos marcados por diferentes times de basquete:

 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

Agora suponha que queremos selecionar a linha do DataFrame que contém um valor na coluna de pontos mais próximo de 101 .

Podemos usar a seguinte sintaxe para fazer isso:

 #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

Pelo resultado, podemos perceber que os Nets possuem um valor na coluna de pontos mais próximo de 101 .

Observe que também poderíamos usar tolist() para exibir apenas o valor mais próximo em vez da linha inteira no DataFrame do pandas:

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

[100]

Observe também que podemos alterar o valor após a função argsort() para encontrar vários valores mais próximos.

Por exemplo, podemos usar a seguinte sintaxe para encontrar linhas no DataFrame com os 2 valores mais próximos de 101 na coluna de pontos :

 #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

A partir do resultado, podemos ver que os Nets têm o valor mais próximo de 101 na coluna de pontos , enquanto os Mavs têm o valor mais próximo de 101 na coluna de pontos .

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns do panda:

Pandas: como selecionar linhas com base nos valores das colunas
Pandas: como combinar linhas com os mesmos valores de coluna
Pandas: como excluir todas as linhas, exceto algumas

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *