Определение ближайшего значения в столбце для каждого фильтра с помощью панд

У меня есть фрейм данных с категориями и значениями. Мне нужно найти значение в каждой категории, ближайшей к значению. Я думаю, что я близок, но я не могу получить правильный вывод при применении результатов argsort к исходному фрейму данных.

Например, если вход был определен в коде ниже, вывод должен иметь только(a, 1, True), (b, 2, True), (c, 2, True) и все остальное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?

Ответы на вопрос(2)

Ваш ответ на вопрос