панды добавляют новый столбец с ближайшим значением из внешнего списка

#pandas #filter

Вопрос:

У меня есть части ( пронумерованные жирным шрифтом 1,8,9 ) в системе координат. Я хочу, чтобы лучшая часть переехала на зеленые дороги. Детали не могут проходить друг мимо друга, поэтому мне нужно найти деталь в конце группы и добавить ее в столбец «открыть». ( другие предложения приветствуются )

Мне нужен способ найти best_index(тип) = index_nr

best_index(8)=9 ( не 10 ,даже если расстояние до выхода, в правом нижнем углу, короче, мешает тип 9)

best_index(1)=5 (меньшее расстояние до выхода ,нижний правый угол, затем индекс = 0 )

введите описание изображения здесь

У меня есть это до сих пор, но это не дает мне явного типа part_type «открыть». Как мне это сделать?

 def closest(point, points):
    return points[cdist([point], points).argmin()]

df1= pd.DataFrame({ 'x_Now':                    [1,1,1,1,1,1,1,1,1],
                    'y_Now':                    [1,2,3,4,5,8,9,10,11],
                    'Type':                     [1,1,1,1,8,8,9,9,9],
                    'Moved':                    [0,0,0,0,0,0,0,0,0]
                    'Open':                     [0,0,0,0,0,0,0,0,0]})

df2 = pd.DataFrame({'x_green_road':             [1,1,1],
                    'y_green_road':             [0,6,12]})

df1['point'] = [(x, y) for x,y in zip(df1['x_Now'], df1['y_Now'])]
df2['point'] = [(x, y) for x,y in zip(df2['x_green_road'], df2['y_green_road'])]
df1['closest'] = [closest(x, list(df2['point'])) for x in df1['point']]