Cara menemukan nilai terdekat di pandas dataframe (dengan contoh)


Anda dapat menggunakan sintaks dasar berikut untuk menemukan baris dalam pandas DataFrame yang berisi nilai terdekat dengan nilai yang ditentukan dalam kolom tertentu:

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

Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.

Contoh: Temukan nilai terdekat di Pandas DataFrame

Misalkan kita memiliki pandas DataFrame berikut yang berisi jumlah poin yang dicetak oleh tim bola basket yang berbeda:

 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

Sekarang misalkan kita ingin memilih baris DataFrame yang berisi nilai di kolom titik yang paling dekat dengan 101 .

Kita dapat menggunakan sintaks berikut untuk melakukan ini:

 #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

Dari hasilnya terlihat bahwa Nets memiliki nilai pada kolom poin yang paling dekat dengan 101 .

Perhatikan bahwa kita juga dapat menggunakan tolist() untuk hanya menampilkan nilai terdekat saja, bukan seluruh baris di pandas DataFrame:

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

[100]

Perhatikan juga bahwa kita dapat mengubah nilai setelah fungsi argsort() untuk menemukan beberapa nilai terdekat.

Misalnya, kita dapat menggunakan sintaks berikut untuk menemukan baris di DataFrame dengan 2 nilai paling dekat dengan 101 di kolom poin :

 #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

Dari hasilnya terlihat bahwa Nets memiliki nilai yang paling mendekati 101 pada kolom poin , sedangkan Mavs memiliki nilai yang paling mendekati 101 pada kolom poin .

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan tugas panda umum lainnya:

Pandas: cara memilih baris berdasarkan nilai kolom
Pandas: cara menggabungkan baris dengan nilai kolom yang sama
Pandas: cara menghapus semua baris kecuali beberapa

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *