【发布时间】:2014-11-22 06:59:19
【问题描述】:
我有一个 (x, y) 坐标的 DataFrame,我想将其转换为数组以执行成对距离计算。
df = pd.DataFrame({'type': ['a', 'a', 'a', 'b', 'b', 'c', 'c', 'c'],
... 'x': [1, 3, 5, 1, 3, 1, 3, 5],
... 'y': [2, 4, 6, 2, 4, 2, 4, 6]})
所需的输出 - 数组中的分组/聚合坐标的新 DataFrame,以便我可以对每个数组应用函数:
grp = coordinates
a array([[1, 2],
[3, 4],
[5, 6]])
b array([[1, 2],
[3, 4]])
c array([[1, 2],
[3, 4],
[5, 6]])
我希望应用的距离计算...
grp['distances'] = grp.apply(lambda x: scipy.spatial.distance.pdist(x['coordinates'], 'euclidean'), axis = 1)
我似乎无法使用 groupby 函数来执行此操作。有什么想法吗?
【问题讨论】:
标签: python arrays pandas scipy euclidean-distance