计算两个熊猫数据框的行之间的欧几里得距离



我有两个pandas dataframes d1d2,看起来像这样:

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

相关内容

最新更新