如何从另一个数据框中找到数据框中点的最近邻居

No *_*Lie 2 python knn dataframe pandas

我想从 dataframe 中找到kdataframe 中所有点的最近邻居。这怎么可行?它似乎只需要一组数据,并且只需要一个查询点。ABsklearn.neighbors.NearestNeighbors

喜欢:

samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]]
from sklearn.neighbors import NearestNeighbors
neigh = NearestNeighbors(n_neighbors=1)
neigh.fit(samples) 

print(neigh.kneighbors([[1., 1., 1.]])) 
Run Code Online (Sandbox Code Playgroud)

来自Python 文档

我想要一个包含多个查询点的数据框而不是 [[1., 1., 1.]]

PS我想要的指标是Mahalanobissklearn.neighbors.KDTree不接受,而且scipy.spatial.KDTree甚至没有任何指标的选择。

bub*_*ble 5

import pandas as pd
from scipy.spatial import KDTree

dataA = pd.DataFrame(pd.np.random.rand(100, 100))
dataB = pd.DataFrame(pd.np.random.rand(100, 100))

kdB = KDTree(dataB.values)
print(kdB.query(dataA.values, k=3)[-1]) # k desired number of neighbors 
#returns indices of 3-neighbors for all rows/points in A
Run Code Online (Sandbox Code Playgroud)