web-dev-qa-db-ja.com

2つの行の間のユークリッド距離を計算pandas dataframes

2つ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列があります

7
j1897

scipy.spatial.distance.cdistを使用して:

import scipy

ary = scipy.spatial.distance.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
15
YOBEN_S