Pandas dataframe で最も近い値を見つける方法 (例付き)


次の基本構文を使用して、特定の列で指定された値に最も近い値を含む行を pandas DataFrame で検索できます。

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

次の例は、この構文を実際に使用する方法を示しています。

例: Pandas DataFrame で最も近い値を検索する

さまざまなバスケットボール チームが獲得したポイント数を含む次のパンダ データフレームがあるとします。

 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

次に、 101に最も近いドット列の値を含む DataFrame の行を選択するとします。

これを行うには、次の構文を使用できます。

 #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()を使用して、pandas DataFrame の行全体ではなく、最も近い値自体のみを表示することもできることに注意してください。

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

[100]

また、 argsort()関数の後に値を変更して、最も近い値を複数検索できることにも注意してください。

たとえば、次の構文を使用して、ポイント列の101に最も近い 2 つの値を持つデータフレーム内の行を検索できます。

 #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に最も近い値を持っていることがわかります。

追加リソース

次のチュートリアルでは、他の一般的なパンダのタスクを実行する方法について説明します。

パンダ: 列の値に基づいて行を選択する方法
パンダ: 同じ列値を持つ行を結合する方法
パンダ:一部の行を除いてすべての行を削除する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です