熊猫–具有自定义功能的每行“乘法表”

时间:2019-12-07 21:12:06

标签: pandas

我有一个带有城市坐标的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函数,但需要一些指导。

2 个答案:

答案 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