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に最も近い値を持っていることがわかります。
追加リソース
次のチュートリアルでは、他の一般的なパンダのタスクを実行する方法について説明します。
パンダ: 列の値に基づいて行を選択する方法
パンダ: 同じ列値を持つ行を結合する方法
パンダ:一部の行を除いてすべての行を削除する方法