我有一个带有城市坐标的DataFrame,如下所示(示例):
x y
A 10 20
B 20 30
C 15 60
我想计算它们之间的距离:sqrt(x ^ 2 + y ^ 2)与彼此的乘法表(示例):
A B C
A 0 20 30
B 20 0 25
C 30 25 0
我该怎么做?我尝试使用apply
函数,但需要一些指导。
答案 0 :(得分:0)
您可以与broadcasting一起使用熊猫中的.apply()
功能:
df['distance'] = (df['x'] ** 2 + df['y'] ** 2).apply(np.sqrt)
答案 1 :(得分:0)
最简单的方法是使用distance_matrix
的scipy:
from scipy.spatial import distance_matrix
df = pd.DataFrame({'x':[10,20,30], 'y': [20,30,60]},index=list('ABC'))
pd.DataFrame(distance_matrix(df,df), index=df.index, columns=df.index)
输出:
A B C
A 0.000000 14.142136 40.311289
B 14.142136 0.000000 30.413813
C 40.311289 30.413813 0.000000