カテゴリと値を持つデータフレームがあります。値に最も近い各カテゴリの値を見つける必要があります。私は近いと思いますが、元のデータフレームにargsortの結果を適用すると、正しい結果を得られません。例えばPandasを使用して各フィルタの列内で最も近い値を特定します
、入力、出力、以下のコードで定義された場合にのみ(a, 1, True)
、(b, 2, True)
、(c, 2, True)
を有するべきであり、他のすべてのisClosest Values
は偽であるべきです。
複数の値が最も近い場合は、最初にマークされた値にする必要があります。
ここでは動作するコードはありますが、データフレームに正しく再適用することができません。私はいくつかの指針を愛するだろう。
df = pd.DataFrame()
df['category'] = ['a', 'b', 'b', 'b', 'c', 'a', 'b', 'c', 'c', 'a']
df['values'] = [1, 2, 3, 4, 5, 4, 3, 2, 1, 0]
df['isClosest'] = False
uniqueCategories = df['category'].unique()
for c in uniqueCategories:
filteredCategories = df[df['category']==c]
sortargs = (filteredCategories['value']-2.0).abs().argsort()
#how to use sortargs so that we set column in df isClosest=True if its the closest value in each category to 2.0?