我有两个pandas dataframes d1
和 d2
,看起来像这样:
d1
看起来像:
output value1 value2 value2
1 100 103 87
1 201 97.5 88.9
1 144 54 85
d2
看起来像:
output value1 value2 value2
0 100 103 87
0 201 97.5 88.9
0 144 54 85
0 100 103 87
0 201 97.5 88.9
0 144 54 85
列的输出的值为D1中的所有行的值为1,D2中的所有行的值为0。这是一个分组变量。我需要在D1和D2的每一行之间找到欧几里得的距离(不在D1或D2之内)。如果d1
具有m
行,并且d2
具有n
行,则距离矩阵将具有m
行和N列
通过使用scipy.spatial.distance.cdist
:
from scipy.spatial.distance import cdist
ary = cdist(d1.iloc[:,1:], d2.iloc[:,1:], metric='euclidean')
pd.DataFrame(ary)
Out[1274]:
0 1 2 3 4 5
0 0.000000 101.167485 65.886266 0.000000 101.167485 65.886266
1 101.167485 0.000000 71.808495 101.167485 0.000000 71.808495
2 65.886266 71.808495 0.000000 65.886266 71.808495 0.000000