У меня есть фрейм данных, который содержит координаты x и y и идентификатор, который выглядит следующим образом:
df = pd.DataFrame(np.random.randint(0,100,size=(26, 2)), columns=list('XY'))
df['id'] = list('abcdefghijklmnopqrstuvwxyz')
Как мне найти линейное расстояние между одной областью и всеми другими областями без использования питонаиметь набор вложенных циклов, сохраняя идентификаторы области OD?
Вывод должен давать тот же результат, что и:
import math
def get_distance(start, end):
dist = math.hypot(end[0]-start[0], end[1]-start[1])
return dist
data = []
for index, row in df.iterrows():
start = [row['X'], row['Y']]
start_region = row['id']
for other_index, other_row in df.iterrows():
end = [other_row['X'], other_row['Y']]
end_rengion = other_row['id']
distance = get_distance(start, end)
entry = dict(
start_region = start_region,
end_rengion = end_rengion,
distance = distance
)
data.append(entry)
pd.DataFrame(data)