У меня есть code
, который измеряет расстояние между XY
координатами, но я надеюсь сделать это более эффективным за счет использования pandas
.
Допустим, у меня есть XY
координаты некоторых предметов:
id_X = [1,2,7,19] #Subject 1
id_Y = [2,5,5,7] #Subject 1
cd_X = [3,3,8,20] #Subject 2
cd_Y = [2,5,6,7] #Subject 2
И я хочу измерить расстояние этих предметов до другой важной XY
координаты:
Factor_X = [10,20,30,20] #Important XY
Factor_Y = [2,5,6,7] #Important XY
Чтобы получить расстояние до первого предмета, я использую следующее и перебираю каждую строку.
dist = math.sqrt(((id_X[0] - Factor_X[0])**2)+((id_Y[0] - Factor_Y[0])**2))
Чтобы получить расстояние до второго предмета, я бы поменял местами id_X
, id_Y
для cd_X
, cd_Y
.
Это становится очень неэффективным, если у меня много предметов.Поэтому я пытаюсь реализовать ту же концепцию, но через pandas
.
Вот моя попытка:
d = ({
'id_X' : [1,2,7,19],
'id_Y' : [2,5,5,7],
'cd_X' : [3,3,8,20],
'cd_Y' : [2,5,6,7],
'Factor_X' : [10,20,30,20],
'Factor_Y' : [2,5,6,7],
})
df = pd.DataFrame(data= d)
df['distance'] = math.sqrt(((df['id_X']-df['Factor_X'])**2)+((df['id_Y']-df['Factor_Y'])**2))
df['distance'] = math.sqrt(((df['cd_X']-df['Factor_X'])**2)+((df['cd_Y']-df['Factor_Y'])**2))
Но это возвращает ошибку:
TypeError: cannot convert the series to <class 'float'>
Предполагаемый вывод:
id_X id_Y cd_X cd_Y Factor_X Factor_Y id_distance cd_distance
0 1 2 3 2 10 2 9 7
1 2 5 3 5 20 5 18 17
2 7 5 8 6 30 6 23 22
3 19 7 20 7 20 7 1 0
Этометод осуществим и создаст ли он более эффективный по времени подход?